So nahm ich ein OS-Klasse im letzten Semester und wir hatten ein Nebenläufigkeit/Threading-Projekt. Es war ein Flughafen-Sim, der Flugzeuge landete/in die Richtung fliegen ließ, in die der Wind wehte. Wir mussten es in Java machen. Jetzt, wo das Finale vorbei ist und mir langweilig ist, versuche ich es in C++ 11 zu tun. In Java habe ich eine synchronisierte Variable für den Wind (0 - 360) in main verwendet und an die 3 Threads übergeben, die ich benutzt habe. Meine Frage ist: Können Sie das in C++ 11 tun? Es ist ein einfacher Leser/Schreiber, ein Thread schreibt/aktualisiert den Wind, die anderen 2 (Start/Land) lesen.Gemeinsame Variablen in C++ 11
Ich habe es funktioniert mit einer globalen Wind-Variable in meiner "threads.cpp" Implementierungsdatei. Aber gibt es eine Möglichkeit, eine Variable an so viele Threads zu übergeben, wie ich will und alle mithalten? Oder ist es eigentlich besser für mich, nur die globale Variable zu verwenden und nichts weiterzugeben? (Warum/warum nicht?) Ich habe mir std::ref()
angesehen, aber das hat nicht funktioniert.
EDIT: Ich benutze bereits Mutex und lock_guard. Ich versuche nur herauszufinden, wie man eine Variable in allen Threads übergibt und auf dem neuesten Stand hält. Im Moment wird nur im Schreib-Thread aktualisiert.
Ja, genau das habe ich versucht! Es scheint fast so, als wäre es mehr ein Schmerz, als nur die globale Variable zu verwenden. Gibt es +/-, um das so zu machen? – lciamp
Nun, die meisten Menschen halten globale Variablen für die meiste Zeit für eine schlechte Praxis. Macht das Testen zumindest schwieriger. –