Re[14]: Тестовое задание ...
От: Selavi  
Дата: 16.06.15 18:01
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>А до этого что, плохие были?


Да, были плохие. В основном они касались оформления кода и внимательности при чтении задания. Проблем реализации многопоточного пула коснулись только Вы.

EP>Люди потратили своё время, посмотрели код, даже если тебе обидно — постарайся сдерживать эмоции.


Спасибо за совет, но лучше давайте говорить о программировании.

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


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


Да, но это дело обернуто в try..catch и ничего плохого не случится. Ошибка залогируется и едем дальше. Хотя, конечно, надо добавить проверку на nullptr

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


Как так? В деструкторе же join-ится

CThreadPoolX::~CThreadPoolX()
{
    terminated = true;
    jobCV.notify_one();
    thread.join();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.