Показать сообщение отдельно
Старый 03.08.2014, 22:38   #2925
kravets
Platinum Member
 
Аватар для kravets
 
Регистрация: 12.03.2010
Адрес: Воронеж
Сообщений: 11,882
По умолчанию

Цитата:
Сообщение от Paul Kellerman Посмотреть сообщение
kravets, стандартная функция ожидания объекта синхронизации (мьютекса в моем случае).
Во время ожидания процессорное время не тратится, поток отправляется системой в спячку
до того момента, когда либо мьютекс освободится, либо истечет таймаут dt. За мьютексом и
за таймаутом следит ОС, и программист при всем желании никак вмешаться в это не может.
Пока не произошло ни то, ни другое, ОС предоставляет процессорное время другим потокам.
Средняя загрузка процессора потоками, участвующих в процессе моделировании, менее 1%.
А все потому что даже когда поток захватывает мьютекс и получает доступ к ресурсу, он не
тратит процессорное время, а просто вызывает функцию Sleep с заданным таймаутом, ими-
тируя некоторые действия с ресурсом с некоторой длительностью, а реально просто спит,
мьютекс при этом захвачен этим потоком, а остальные потоки спят, сидя в Wait-функции.
Короче, все потоки практически всё время "спят", включая поток, захвативший мьютекс.
Поправьте меня. Вам нужно, чтобы потоки будились случайным образом, а не FCFS. Для этого Вы процесс ожидания каждого потока разбиваете на последовательность случайных точек ожидания пробуждения. Кому повезет - того и разбудили.

Я правильно понял?
---------
Обычно пуська. Но иногда кое-кому доводится увидеть льва в год тигра...
"Экономика и менеджмент систем управления" - новый cписок ВАК
kravets вне форума  
Реклама