So übergeben Sie Funktionsparameter an boost :: thread_groups :: create_thread ()

8

Ich bin neu bei Boost.Threads und versuche zu verstehen, wie man Funktionsargumente an die Funktion boost::thread_groups::create_thread() übergibt. Nach dem Lesen einiger Tutorials und der Boost-Dokumentationen verstehe ich, dass es möglich ist, die Argumente einfach an diese Funktion zu übergeben, aber ich kann diese Methode nicht zum Laufen bringen.

Die andere Methode, über die ich lese, ist die Verwendung von Funktoren, um die Parameter an meine Funktion zu binden, aber das würde Kopien der Argumente erzeugen, und ich verlange streng, dass const-Referenzen übergeben werden, da die Argumente große Matrizen sind (was ich vorhabe) mit boost::cref(Matrix) , sobald ich dieses einfache Beispiel zu arbeiten).

Kommen wir nun zum Code:

%Vor%

Dies wird nicht mit dem folgenden Fehler kompiliert:

%Vor%

Was mache ich falsch?

    
Mindstorm 01.05.2013, 13:27
quelle

2 Antworten

15

Sie können keine Argumente an boost::thread_group::create_thread() function übergeben, da es nur ein Argument enthält. Sie könnten boost::bind :

verwenden %Vor%

Oder wenn Sie boost::bind nicht verwenden möchten, könnten Sie boost::thread_group::add_thread() wie folgt verwenden:

%Vor%     
soon 01.05.2013, 13:40
quelle
5

Für mehr Flexibilität können Sie verwenden:

-Lambda-Funktionen (C ++ 11): Was? ist ein Lambda-Ausdruck in C ++ 11?

%Vor%

-Functors, die die Argumente als Const-Referenzen speichern.

%Vor%

-std :: bind (C ++ 11) oder boost :: bind

    
Peter 01.05.2013 13:48
quelle

Tags und Links