Ich habe ein kleines Problem, aber ich weiß nicht, wie man es löst.Wie Eigen: Matrix durch Referenz
Los geht's: Ich muss an einer großen Eigenmatrix mit Multithreads arbeiten. Jeder Thread muss auf die Matrix zugreifen. Die Dimension wird während der Programmausführung angegeben, daher muss ich sie innerhalb von main() und nicht als global deklarieren. Ich habe verschiedene Lösungen ohne Erfolg ausprobiert. Ich suche etwas wie "pass by reference", aber ich habe gelesen, dass diese Methode nicht mit Eigen Matrix funktioniert. Hier ist ein kleines Beispiel. Kann mir jemand sagen, wie ich dieses Problem lösen kann? Das Programm muss schnell sein, also so etwas wie: -Speichern Sie die Matrix in einer Datei, und lesen Sie die Datei in jedem Thread, arbeiten Sie an der Matrix, speichern Sie die Matrix in einer Datei, lesen Sie die Datei von der Haupt- wieder nicht der beste Weg, denke ich ...;) Weiß jemand eine bessere Lösung? Danke an alle!
void calc() {
// work on the Matrix
}
int main() {
Eigen::Matrix<bool, a, b> Mat;
// Start some thread(calc);
cout << Mat;
}
passieren nur 'Mat' zu' durch Bezugnahme calc', das heißt mit der Art 'Matrix & '. Sie können es auch global deklarieren und 'Mat.resize (rows, cols);' aufrufen, aber das ist hässlich. –
ggael