Re[13]: падение на boost
От: TheBeard Россия  
Дата: 11.12.07 17:25
Оценка:
Здравствуйте, Socket, Вы писали:

S>кстати для интереса сделал в цикле вызов 1000 раз CreateThread так же падает


Ищите ошибку в thread procedure (для проверки сделайте thread procedure из единственного вызова Sleep() -- падать не будет).
Re[13]: падение на boost
От: Кодт Россия  
Дата: 11.12.07 18:16
Оценка:
Здравствуйте, Socket, Вы писали:

S>кстати для интереса сделал в цикле вызов 1000 раз CreateThread так же падает

Стопудов гонки в функции потока.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[11]: падение на boost
От: alsemm Россия  
Дата: 12.12.07 00:10
Оценка:
Здравствуйте, Socket, Вы писали:

...
S>после того как поставил Sleep(10), мессадж боксы больше не появляются.
Добавление Sleep(10) привело к тому, что стали запускаться потоки которые наплодились вызовами threads.create_thread. Если checker_thread небольшая и ничего особо не делает, то запущенные потоки умирали не давая шедулеру сойти с ума, т.е. 200 потоков не жили одновременно.
А падает оно, небось, внутри threads.create_thread на CreateThread: Boost дергает CreateThread, проверяет чего получилось, если ничего хорошего, то кидает исключение. Лечить отловом исключений из threads.create_thread. Все это imho, конечно.

Алексей
Re[11]: падение на boost
От: Socket Ниоткуда http://www.samborsky.com
Дата: 12.12.07 11:41
Оценка:
Здравствуйте, Socket, Вы писали:

S>Выяснилось откуда окошко то...


S>Было:


S>
S>    boost::thread_group threads;

S>    for( int i = 0; i < 200; i++ )
S>        threads.create_thread(boost::bind(&checker_thread,this));
            
S>    threads.join_all();
S>



S>Стало:

S>
S>    boost::thread_group threads;

S>    for( int i = 0; i < 200; i++ ){
S>        threads.create_thread(boost::bind(&checker_thread,this));
S>        Sleep(10);
S>    }
            
S>    threads.join_all();

S>


S>Насколько я понял падение происходило из 3х оброботок 1 раз.

S>после того как поставил Sleep(10), мессадж боксы больше не появляются.

S>Прошу прокоментировать знающих людей почему так происходит? в винде нельзя так быстро создавать треды?


Стыдно за такие поспешные выводы. Проблема была действительно в checker_thread, а именно в отсутствии синхронизации
при обращении к geoip библиотеке.
http://www.samborsky.com — мой блог
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.