Не удалось повторить вашу проблему:
image.png
Она ещё актуальна? Если да, прикрепите тестовый проект, в которм повторяется эта ошибка. Или напишите на каком сайте и с какими настройками действия получения кода используется проект.
Всем привет!
Ломаю голову над одной задачкой. Как оптимальнее всего продумать логику, чтобы при многопотоке каждая функция выполнялась любым потоком, но только одним?
Допустим, есть у нас в Main вызов 123 функций и скрипт работает в 17 потоков (цифры сугубо для примера). Как сделать так, чтобы в каждую функцию мог зайти только один поток, но без привязки к его индексу?
Думал уже про какие-то флаги в глобальных переменных, но так этот пазл в голове и не сложился.
Был бы признателен за любые советы!
@UA делаем глобальную переменную с значением 0, потом условие если эта переменная == 0 - вызов функции, на страте функции сразу увеличиваем переменную. Желательно что бы при этом потоки запускались с паузой между друг другом.
ПС. на каждую функцию своя переменная
@gaget007, так я хотел делать изначально, но это совсем не универсально. Поэтому и решил искать вариант без привязки к индексам (номерам потоков).
@DrPrime, вот о чём-то таком как раз и думал, но здесь отталкивает необходимость плодить кучу переменных и есть риск, что всё равно в функцию зайдёт больше потоков, чем один.
Эх, видимо, простого решения здесь не придумать :)
В любом случае, спасибо за ответы!
@UA У меня в скрипте реализовано так. If [[THREAD_INDEX]] == 1 , а в нём уже функции которые через глобальные переменные управляют всем скриптом. Например первый поток читает reboot.txt (или get-запрос в админку), если в нём не 0, то установить глобальную переменную GLOBAL_REBOOT значением взятым из файла. А остальные потоки периодически проверяют значение GLOBAL_REBOOT, и если [[GLOBAL_REBOOT]] == [[THREAD_INDEX]], то завершить поток.
И всё в том же духе, у меня всё управление скриптом завязано на первом потоке.