24.07.2010, 15:04
Эх народ. Посмотрите код или запустите сервер с этим плагином из под отладчика (там все будет видно).
Вопрос: какой код выполняется из под новых ниток?
Ответ: код делающий паузу и добавляющий параметры вызова в очередь. ВСЕ!!!. Весь остальной код (и ваши обработчики) вызывается из основной нити сампа.
Я совсем не понимаю за чем нужен этот плагин, потому что все что он умеет, это сделать новую нитку, в этой нитки сделать паузу и добавить параметры вызова в очередь. А в основной нитке сервера эту очередь перебирать. Romanius, прежде чем писать пойми как работают бустовые нитки и что самп потоко не безопасен!
Для интересующихся, код, выполняющийся в новой никте:
После завершении этой функции нитка завершает свое существование.
Вопрос: какой код выполняется из под новых ниток?
Ответ: код делающий паузу и добавляющий параметры вызова в очередь. ВСЕ!!!. Весь остальной код (и ваши обработчики) вызывается из основной нити сампа.
Я совсем не понимаю за чем нужен этот плагин, потому что все что он умеет, это сделать новую нитку, в этой нитки сделать паузу и добавить параметры вызова в очередь. А в основной нитке сервера эту очередь перебирать. Romanius, прежде чем писать пойми как работают бустовые нитки и что самп потоко не безопасен!
Для интересующихся, код, выполняющийся в новой никте:
Code:
void RunPawnThread(int thrid) { boost::mutex::scoped_lock lock(mutex); if(ThreadData[thrid].dealy) boost::this_thread::sleep(boost::posix_time::milliseconds(ThreadData[thrid].dealy)); threadID.push(thrid); }