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?
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
:
Oder wenn Sie boost::bind
nicht verwenden möchten, könnten Sie boost::thread_group::add_thread()
wie folgt verwenden:
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
Tags und Links c++ boost-thread