Что-то подзадолбался я пытаясь делать многопоточный шаблон. Получается полная лажа. Управления потоками нет вообще, ни паузу между потоками сделать, ни запустить при выполнении определенных условий, вообще не сделать с ними ничего.
К примеру простая задача, в шаблоне нужно выполнять операции над файлами и директориями. Ставлю условие if где проверяется глобальная переменная !=1, далее, следующим шагом устанавливаю эту глобальную переменную равной единице. Соответственно, если !=1 то поток должен идти на операции работы с файлами и папками, все остальные потоки должны завернуться на таймаут. В итоге ничего не работает. Все дело, насколько я понял, в том что здесь 2 шага и пока первый поток выставляет переменную, еще несколько потоков успевают проскочить вместе с ним, до проверки условия. Естественно, когда дальше все эти несколько потоков пытаются менять в файлах и папках что-то одновременно, выскакивает ошибка доступа, все, шаблон нерабочий.
Получается что zennoposter это не многопоточная программа? Потому что запуск кучи проектов одновременно, под видом потоков, без возможности управления потоками из самих проектов - это не многопоточность а фигня. Или я что-то не понимаю и делаю не так? Как вообще народ справляется с подобными проблемами? Разбивать из-за этого шаблон на 10-20 частей и пихать их в планировщик - не вариант, тем более планировщика нормального тоже нет.
К примеру простая задача, в шаблоне нужно выполнять операции над файлами и директориями. Ставлю условие if где проверяется глобальная переменная !=1, далее, следующим шагом устанавливаю эту глобальную переменную равной единице. Соответственно, если !=1 то поток должен идти на операции работы с файлами и папками, все остальные потоки должны завернуться на таймаут. В итоге ничего не работает. Все дело, насколько я понял, в том что здесь 2 шага и пока первый поток выставляет переменную, еще несколько потоков успевают проскочить вместе с ним, до проверки условия. Естественно, когда дальше все эти несколько потоков пытаются менять в файлах и папках что-то одновременно, выскакивает ошибка доступа, все, шаблон нерабочий.
Получается что zennoposter это не многопоточная программа? Потому что запуск кучи проектов одновременно, под видом потоков, без возможности управления потоками из самих проектов - это не многопоточность а фигня. Или я что-то не понимаю и делаю не так? Как вообще народ справляется с подобными проблемами? Разбивать из-за этого шаблон на 10-20 частей и пихать их в планировщик - не вариант, тем более планировщика нормального тоже нет.