Я путаю скорость, отличающуюся от использования блокировки мьютекса() и разблокировки() внутри и снаружи цикла for. Я получил значение глобальной переменной и функцию, которая увеличивает его 1000000 раз. Эта функция запускается параллельно 5 потоками. Я измерил время, прошедшее и получил следующие результаты:Разница скорости блокировки Mutex внутри и снаружи петли фока
mutex.lock();
for(int i = 0; i < 1000000; i++)
{
value++;
}
mutex.unlock();
0.160921 секунды
и:
for(int i = 0; i < 1000000; i++)
{
mutex.lock();
value++;
mutex.unlock();
}
2.10521 секунды
Я полагаю, со вторым внутренним устройством мьютекса управления слишком отлично, и много времени проводится между переключением потоков? или есть что-то еще?