Re[4]: внутренняя реализация std::mutex?
От: Videoman Россия https://hts.tv/
Дата: 17.05.18 15:38
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Всё зависит от задач.

AG>Я обычно мьютексы не использую, так как это "тяжёлые" системные объекты.
AG>Насчет критических секций — не вижу ничего предосудительного в их применении.
AG>Часто я аккуратно пользуюсь ими. Здесь важно — НЕ вводить в облась, защищенную секцией много кода:
AG>
AG>::EnterCriticalSection(m_pCS);
AG>// Самые элементарные действия с общими ресурсами
AG>::LeaveCriticalSection(m_pCS);
AG>


Ну и зря. Под Windows, внутри Microsoft CRT, std::mutex не имеет ничего общего с WinAPI Mutex. Там, грубо, простой test_and_set, без захода в ядро.

AG>Заполнять ядра CPU работой — это палка о двух концах:

AG>При работе таких приложений, компьютер очень медленно реагирует на действия пользователя.
AG>Правильнее — где-то в циклах рабочих потоков вводить ::Sleep(100...500);
AG> — чтобы отдать управление системе (исключить жуткие тормоза для end-user-а).

Вот ни разу не встречал такого (только если не долбиться с тяжелым запросом в ядро в цикле). Всегда свои программы профилировали чтобы загрузка СPU была 100%. Если меньше, значит где-то холостые ожидания — значит код не оптимален, с точки зрения многопоточности.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.