@Mentall said in Идеальная синхронизация - как?:
Встала задача: 10 потоков. Каждый поток на определенном этапе запрашивает ручной ввод. Необходимо, чтобы скрипт автоматически проверял ввод данных в каждом из 10 потоков и после ввода в 10-м по счету потоке синхронно жал кнопку во всех 10 потоках.
Пробовал через глобальную переменную с её увеличением после ввода текста в каждом потоке и когда она становилась равна 10, переходить к нажатию кнопок, но почему-то в некоторых потоках возникает задержка в 1-2 секунды, либо же все действия продолжают выполняться только в одном потоке, игнорируя оставшиеся 9. Пробовал метки и переходы по ним. Пробовал вызов функции в несколько потоков, но также если делать через IF, то либо получается ошибка когда условие равенства глобальной переменной не выполняется, либо если использовать метки, то данный поток имеет задержку перед другими..
В общем, прошу помочь с указанием алгоритма, на котором можно реализовать такую синхронизацию.
Через глобальную переменную самый просто и наглядный вариант. Если скрипт работает не так, как вы ожидаете, смотрите условия работы с глобальной переменной, там ошибиться особо негде.
Я бы вообще установил отдельный поток для изменения глобальной переменной, а остальные потоки в цикле бы ожидали это изменение.
Да, минимальный сон в BAS составляет 1 секунду, то есть потоки начнут выполнять задачу от 0 до 1 секунды после изменения глобальной переменной. Если нужна задержка меньше, можете использовать node js или, например, действие "читать файл".