Klassenfunktion mit Parameter als Thread
-
@Lupus-SLE Ich würde vermuten, es geht dem TE darum, irgendwas mit Threads zu machen und das Logging ist halt einfach ein Beispiel um damit zu experimentieren.
-
@Schlangenmensch sagte in Klassenfunktion mit Parameter als Thread:
dann hol halt immer nur eine Nachricht aus der Queue und log die und nicht alle bisher angelaufenen
Ich denke auch, das wäre dann am sinnvollsten
... sofern man keinen Zwischencache haben möchte.
-
Verzeiht diese vielleicht unbedarfte Frage, aber wie vermeidet man in C++ eigentlich das Busy-Waiting des Pollers? Ich meine, es sollte doch auch ohne das Sleep-Interval gehen... bin aber nicht mehr so im Geschehen drin.
-
@Lupus-SLE Du meinst die Lösung von @Quiche-Lorraine mit der Condition Variable?
-
@Schlangenmensch sagte in Klassenfunktion mit Parameter als Thread:
@Lupus-SLE Du meinst die Lösung von @Quiche-Lorraine mit der Condition Variable?
Jupp, das müsste es sein... kein "Busy"-Waiting mehr... Aber er kennt
std::jthreadbei mir nicht. Was ist das?
-
@Lupus-SLE Die Doku hilft: https://en.cppreference.com/w/cpp/thread/jthread.html
Du musst deinen Compiler auf C++ 20 stellen.
Jthreads rejoinen im Destruktor automatisch.
-
Vielen Dank für die zahlreichen Antworten.
-
@Schlangenmensch Du meinst den dtor des Thread-Objekts, oder? Das MutEx Geraffel bleibt davon unberührt, denke ich...
-
@Lupus-SLE Hast du dir die unterschiedlichen Code Schnipsel hier angeschaut?
std::jthreaddamit man keinjoinmehr vergessen kann.
std::lock_guardum den Mutex Kram abzuhandeln.
std::scoped_lockwenn man mehrere Mutexes hat um Deadlocks zu vermeiden.
Was wir hier im Thread noch nicht hatten:std::unique_lock, wenn man mehr Flexibilität braucht, alsstd::lock_guardzur Verfügung stellt.Kenne deine Standard Bibliothek und https://en.cppreference.com/w/cpp/ ist dein Freund

-
@Schlangenmensch sagte in Klassenfunktion mit Parameter als Thread:
Kenne deine Standard Bibliothek
Ich bin kein StammCppler.
Außerdem ging es doch darum, das alle davon einen Mehrwert haben. 