Size: a a a

2021 July 03

RM

Roy Mustang in C++ Together 2.0
а то пздц какой разброс
источник

RM

Roy Mustang in C++ Together 2.0
Да с мьютексом явно быстрее
источник

RM

Roy Mustang in C++ Together 2.0
13 секунд против 2
источник

RM

Roy Mustang in C++ Together 2.0
Ну и приколы
источник

RM

Roy Mustang in C++ Together 2.0
Хотя в целом я не удивлен
источник

RM

Roy Mustang in C++ Together 2.0
Учитывая что при спинлоках все потоки что имеются не дают другим потокам работать
источник

RM

Roy Mustang in C++ Together 2.0
Даже тому что сейчас вытаскивает из очереди
источник

RM

Roy Mustang in C++ Together 2.0
Возможно это и приводит к ухудшению
источник

RM

Roy Mustang in C++ Together 2.0
Все они работают и никто не хочет отдавать свое время другим потокам
источник

RM

Roy Mustang in C++ Together 2.0
Корректней будет если время будет отдаваться именно тому потоку, который следующим будет работать
источник

RM

Roy Mustang in C++ Together 2.0
При спинлоках мы нагружаем все потоки, даже те что в холостую крутятся
источник

RM

Roy Mustang in C++ Together 2.0
Отсюда и логический вопрос, а нахуя на холостой ход давать время
источник

RM

Roy Mustang in C++ Together 2.0
Тем самым это время отнимая у других потоков
источник

RM

Roy Mustang in C++ Together 2.0
Разве нет?
источник

NK

Nikolay Kononov in C++ Together 2.0
потому что переключение контекста операционная система делает довольно редко
источник

NK

Nikolay Kononov in C++ Together 2.0
а системный вызов довольно затратная штука
источник

RM

Roy Mustang in C++ Together 2.0
Тогда не пойму, почему мьютекс быстрее
источник

RM

Roy Mustang in C++ Together 2.0
Если он тоже на спинлоке
источник

NK

Nikolay Kononov in C++ Together 2.0
типа мьютекс он обращается к операционной системе и говорит "положи этот поток в специальную очередь на ожидание пока я его не разбужу", это долгая операция
источник

RM

Roy Mustang in C++ Together 2.0
Несомненно, его спинлоку хватает времени чтоб протиснуться в промежуток когда я делаю pop
источник