Я недавно обнаружил класс ATTh CThreadPool и был очень доволен этой находкой. Это аккуратный маленький класс, который позаботится о семантике синхронизации, состоящей в том, чтобы иметь несколько рабочих потоков для обработки некоторой очереди запросов. Задачи передаются объекту CThreadPool каким-то внешним процессом.
Будучи очень аккуратным и чистым, похоже, не существует способа узнать, все ли задачи были выполнены случайно. Какой лучший способ сделать это?
Например, скажем, мне нужно выполнить 10 тяжелых вычислительных задач, а затем перейти к другому. Я не могу двигаться дальше, пока не узнаю, что задания завершены.
Итак, я создаю CThreadPool с 10 потоками, ставлю задачи в очередь и выключаю их до потоков. Как я узнаю, когда задачи будут выполнены?
Боаз