Unnötiges Sperren in AWL? (Visual C ++ Express)

Ich versuche, einen Tetris AI-Algorithmus zu erstellen, der über mehrere Kerne skaliert werden kann.

ei meinen Tests stellte sich heraus, dass die Verwendung mehrerer Threads langsamer ist als die Verwendung eines einzelnen Thread

Nach einigen Recherchen habe ich festgestellt, dass meine Threads die meiste Zeit darauf warten,_Lockit _Lock(_LOCK_DEBUG). Hier ist einBildschirmfot.

ie Sie sehen, wird die Sperre auf ein @ angewendelokale Variabl, für die sowieso keine Sperre erforderlich sein sollte!

Meine Fragen sind:

Warum sperrt STL diesen Vektor?Wie kann ich mein Programm schneller machen? (Arrays verwenden?)Aktualisiere

Ich habe die Sperre aufgehoben, indem ich die folgenden Befehlszeilenoptionen in meinen Visual Studio-Projekten festgelegt habe:

/D "_HAS_ITERATOR_DEBUGGING=0" /D "_SECURE_SCL=0"

Es ist wichtig, dies auf alle Projekte in der Lösungsdatei anzuwenden, da andernfalls zur Laufzeit Fehler auftreten (in Konflikt stehende Iteratoren usw.).

Das zweite, was ich geändert habe, war das Ändern vonstd::vector<bool>instd::vector<char>. Mir war nicht bewusst, dassstd::vector<bool> war so langsam.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage