Я хотел бы, чтобы рабочий поток подождал команды, сделайте это, а затем отправьте результат обратно вызывающему. Это отличается от обычной проблемы производителя/потребителя из-за ответа.Как я могу связаться с производителем и потребителем в обоих направлениях?
Это то, что я имею в виду:
main
{
construct workers
push to shared input buffers
notify workers
wait
print results from shared output buffer
}
worker
{
wait
read from shared input buffer
do work
notify main
}
Я на правильном пути? Есть ли шанс, что работник может ответить до того, как начнутся главные запуски?
(я использую C++, если это уместно)
У вас есть поток, который работает до тех пор, пока не будет выполнено условие. Затем он уведомляет поток 2 и останавливается. Thread 2 просыпается, работает, удовлетворяет условию, уведомляет поток 1 и останавливается. Тема 1 просыпается и бежит. Вся работа сериализована. Вы устранили необходимость в нарезке резьбы, и лучше с помощью однопоточного [конечного автомата] (https://en.wikipedia.org/wiki/Finite-state_machine). – user4581301
@ user4581301 Мой план состоит в том, чтобы иметь нескольких работников, чтобы я мог выполнять работу параллельно. (Я обновил сообщение) – Josh
Ожидаются ли перезагрузки рабочие или при необходимости создадут новые потоки? – user4581301