Re[13]: Тестовое задание ...
От: Evgeny.Panasyuk Россия  
Дата: 16.06.15 14:11
Оценка: 2 (1) +1
Здравствуйте, Selavi, Вы писали:

S>>>Заметьте, что моей реализации, которую все обос*али вышеописанных проблем нет)

EP>>Там есть проблемы покруче, например:
EP>>* одно и то же задание может выполнится несколько раз, так как не учитываются spurious wakeup.
EP>>* выполнение не заданного задания (segfault).
EP>>* отсутствие join для CThreadPoolX, в результате std::terminate.
S>Да, Вы правы...вот черт( Наконец то хороший анализ!

А до этого что, плохие были? Люди потратили своё время, посмотрели код, даже если тебе обидно — постарайся сдерживать эмоции.

S>А не могли бы подробней про 2 и 3?


2. Рассмотри ситуацию когда рабочий поток создался, не получил ни одного задания, а потом разрушился. В этом случае поток проснётся и попробует выполнять this->task, который указывает в никуда.

3. Управляющий поток CThreadPoolX создаётся, но нигде ни join'ится, ни detach'ится. В таком случае деструктор std::thread сделает std::terminate.

Наверняка есть ещё подобные проблемы, но дальше не смотрел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.