Ich bin verwirrt der Geschwindigkeit unterscheidet zwischen der Verwendung der Mutex lock() und entsperren() innerhalb und außerhalb einer for-Schleife. Ich habe einen globalen Variablenwert und eine Funktion, die es 1000000 mal erhöht. Diese Funktion wird parallel von 5 Threads ausgeführt. Ich maß die verstrichene Zeit und bekam diese Ergebnisse:Mutex Lock Geschwindigkeit Unterschied innerhalb und außerhalb der foor Schleife
mutex.lock();
for(int i = 0; i < 1000000; i++)
{
value++;
}
mutex.unlock();
0,160921 Sekunden lang
und:
for(int i = 0; i < 1000000; i++)
{
mutex.lock();
value++;
mutex.unlock();
}
2,10521 Sekunden lang
ich mit der zweiten inneren Mutex Anordnung übernehmen die Steuerung zu Gut und viel Zeit wird zwischen den Threads verbracht? oder gibt es noch etwas anderes?