2016-05-16 17 views
0

ich so etwas wie dieses Stück Code habenC++ Threads hinzufügen Code nach Funktionsaufruf

class Someclass{ 
int somevalue; 
void somefunction(int& arg1, bool& arg2);  
} 

int main(){ 
Someclass someobject; 
int something; 
bool maybe; 

thread t(...); 
} 

ich einen Thread machen möchten, dass die ‚Someobject die Lücke mit den Argumenten int‚ruft vielleicht ‚etwas‘ und Bool‘. Darüber hinaus sollte der Thread nach dem Ausführen der Funktion auch das int der Klasse ändern. Ich kann den Cout nicht direkt in die Member-Funktion schreiben, weil ich Cout als optional haben muss.

Ich bin gekommen, um diesen

thread t([&someobject]() { 
    someobject.somefunction(something, maybe); 
    cout << Value: << someobject.somevalue << endl; 
}); 

Ist dies der richtige Weg, dies zu tun, oder gibt es eine andere Art und Weise?

Antwort

0

Ja, das sieht nach einem guten Weg aus.

Vergessen Sie nicht, something und maybe zu erfassen, und achten Sie auf Synchronisierung (vielleicht erfassen sie durch Wert?).

0

Sie benötigen einen Mechanismus zum Synchronisieren. Sie müssen sicherstellen, dass void somefunction bereits alle Arbeiten über somevalue abgeschlossen hat, bevor Sie die somevalue ausgeben, andernfalls können Sie den Wert vor somefunction ausgeben. Noch schlimmer, wenn ein Wert den atomaren Betrieb nicht garantieren kann, können Sie etwas seltsames ausgeben.