...выполнено слабо
К сожалению, добиться обратной связи на тему "что именно слабо" не удалось.
Пожалуйста, покритикуйте реализацию.
Задание:
Написать пул потоков CThreadPool, обрабатывающий задачи, производные от класса CTask.
Задачи переопределяют функцию virtual void CTask::Execute() = 0;
Пулу при инициализации задается число рабочих потоков:
bool CThreadPool::Init(int _numThreads);
Задачи добавляются для разных клиентов. Задачи одного клиента обрабатываются в том порядке, в котором они были добавлены. Разные клиенты обслуживаются параллельно.
bool CThreadPool::AddTask(int _clientId, CTask* _task);
Не должно быть "повисших" клиентов, даже если клиентов больше, чем потоков.
Т.е. поток должен обрабатывать разных клиентов по-очереди, а не одного до завершения всех его задач.
Реализация(яндекс диск, архив С++ проекта на Visual Studio):
https://yadi.sk/d/PDLZZDPih3QT4
В архиве есть описание хода мыслей
Заранее спасибо за потраченное время.