Ich möchte einen Worker-Thread warten auf einen Befehl, tun Sie es, und senden Sie das Ergebnis zurück an den Aufrufer. Dies unterscheidet sich von dem normalen Producer/Consumer-Problem wegen der Antwort zurück.Wie kann ich einen Produzenten und einen Verbraucher in beide Richtungen kommunizieren lassen?
Das ist, was ich denke:
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
}
Bin ich auf dem richtigen Weg? Gibt es eine Chance, dass der Arbeiter antworten kann, bevor der Main anfängt zu warten?
(Ich verwende C++, wenn diese relevant ist)
Sie haben einen Thread, der läuft, bis eine Bedingung erfüllt ist. Dann benachrichtigt es Thread 2 und hört auf zu laufen. Thread 2 wacht, läuft, erfüllt eine Bedingung, benachrichtigt Thread 1 und stoppt. Thread 1 wacht und läuft. Alle Arbeiten sind serialisiert. Sie haben die Notwendigkeit für Threading beseitigt und sind besser mit einer einzelnen Thread [State Machine] (https://en.wikipedia.org/wiki/Finite-state_machine). – user4581301
@ user4581301 Mein Plan ist es, mehrere Arbeiter zu haben, damit ich die Arbeit parallel machen kann. (Ich habe den Beitrag aktualisiert) – Josh
Wird von den Arbeitern jemals erwartet, dass sie neu gestartet werden, oder werden Sie bei Bedarf neue Threads erstellen? – user4581301