Ich benutze eine Anwendung, bei der eine Anwendung der unteren Ebene immer einen Callback RecData (char * buf) aufruft, wenn sie Daten empfängt.Wie benutze ich eine Warteschlange mit zwei Threads - eine für Consumer und eine für Producer
Im Callback erstelle ich zwei Threads und übergebe die Consumer- und Producer-Funktion an diese erzeugten Threads.
Mein Code:
Leere RecData (char * buf) {
CreateThread(NULL,0,producer_queue,(void *)buf,0,NULL);
CreateThread(NULL,0,consumer_queue,NULL,0,NULL);
}
Die oben genannten Arbeiten, wenn ich ein Datum zu einem Zeitpunkt erhalten. Wenn ich ungefähr 5 Daten fast gleichzeitig bekomme, dann sollte producer_queue zuerst alle Daten in die Warteschlange stellen und dann consumer_queue sollte mit dem Abrufen der Daten beginnen, aber hier, sobald producer_queue die ersten Daten in die Warteschlange legt, ruft consumer_queue sie ab.
Gibt es einen Grund, warum Sie jedes Mal, wenn Sie Daten empfangen, 2 Threads spawnen? – Alan
NEIN mein einziges Motiv ist das Einreihen der Daten in die Warteschlange und das Lesen der Daten aus der Warteschlange, aber wenn ich nur einen Thread für den Producer in die RecData (char * buf) -Funktion lege, wie und wann werde ich anfangen, die Daten aus der Warteschlange zu lesen. bitte help –
Ein anderer Ansatz könnte sein, einen einzelnen Leser-Thread zu spawnen. In der RecCall zurück, würden Sie nur die Warteschlange sperren und die Daten in die Warteschlange stellen.Ihr Reader-Thread würde eine Schleife zum Lesen der Daten aus der Warteschlange ausführen. Nur ein Gedanke. – Alan