В основном моя программа имеет 2 набора потоков, рабочих и рабочих мест. Каждое задание имеет время прибытия, затем оно помещается в очередь.Многопоточная программа
Для серверов я хочу, чтобы они постоянно искали работу в очереди, как только в задании есть задание, только один работник снимает его и делает с ним дело.
В основном все рабочие потоки создаются первыми, а затем создаются и синхронизируются потоки заданий (каждое нажатие на вещи в очереди). Я не могу получить правильное время, так как рабочие потоки иногда делают что-то в одно и то же время. Или задания не попадают в очередь в нужное время (т. Е. Работа с временем прибытия 3 доставляется до работы с временем прибытия 2). Как это сделать с помощью семафоров и/или мьютексов?
Я пытался поставить мьютекс в функции работника, но я на самом деле не имеют хорошую ручку на мьютексы/семафоров ..
Любые идеи будут оценены.
Спасибо!
Ваша терминология болезненна. Перепишите это с помощью сервера = worker, client = job, client thread = server. –
Ugh. За исключением использования 'std :: cout', это чистый C-код. Знаете ли вы, что C++ намного больше, чем просто C-надстройка? Если вы так любите C, вы даже используете ключевое слово 'struct', где C++ не требует его, но C does, то почему бы не отказаться от потоков в пользу' printf() 'и т. Д. И сделать чистую C? Как вы это делаете, толпа C недовольна тем, что использует потоки, и толпу C++ для использования C, за исключением потоков. – sbi