Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Да, гаранитую 17.09.08 12:15 Число просмотров: 2702
Автор: PS <PS> Статус: Elderman
|
Да, первый вызов Instance() идет только из одного потока.
Код примерно следующий.
S1::Instance().Init()
S2::Instance().Init()
S3::Instance().Init()
...
S1::Instance().Start()
Первые вызовы идут в одном потоке.
Остальные потоки появляются только после инициализации всех синглетонов.
void тут высказывается про ровные места. Если бы они были бы ровными - поста бы не появилось.
У меня появилось другое предположение. Давно заметил, что boost::thread ведет себя не корректно в "кислотной среде".
Есть у меня код, доставшийся по наследству: он полностью unsafe, буфера, которые могут переполнится, указатели пущенные в свободное плавание, доступ к переменным из потоков не залоченые, и все остальные прелести.
Так вот в этом коде new boost::thread вываливается с эксепшеном.
Так что его можно использовать как детектор "что-то где-то плохо".
Так вот, не создал ли я где то в своем safe коде, какой нить косяк... буду разбираться. Если косяк действительно есть, то удалю этот пост. Если нарвусь на что-то более интересное - напишу.
|
|
|