03.08.2014, 22:38
|
#2925
|
Platinum Member
Регистрация: 12.03.2010
Адрес: Воронеж
Сообщений: 11,882
|
Цитата:
Сообщение от Paul Kellerman
kravets, стандартная функция ожидания объекта синхронизации (мьютекса в моем случае).
Во время ожидания процессорное время не тратится, поток отправляется системой в спячку
до того момента, когда либо мьютекс освободится, либо истечет таймаут dt. За мьютексом и
за таймаутом следит ОС, и программист при всем желании никак вмешаться в это не может.
Пока не произошло ни то, ни другое, ОС предоставляет процессорное время другим потокам.
Средняя загрузка процессора потоками, участвующих в процессе моделировании, менее 1%.
А все потому что даже когда поток захватывает мьютекс и получает доступ к ресурсу, он не
тратит процессорное время, а просто вызывает функцию Sleep с заданным таймаутом, ими-
тируя некоторые действия с ресурсом с некоторой длительностью, а реально просто спит,
мьютекс при этом захвачен этим потоком, а остальные потоки спят, сидя в Wait-функции.
Короче, все потоки практически всё время "спят", включая поток, захвативший мьютекс.
|
Поправьте меня. Вам нужно, чтобы потоки будились случайным образом, а не FCFS. Для этого Вы процесс ожидания каждого потока разбиваете на последовательность случайных точек ожидания пробуждения. Кому повезет - того и разбудили.
Я правильно понял?
|
---------
Обычно пуська. Но иногда кое-кому доводится увидеть льва в год тигра...
"Экономика и менеджмент систем управления" - новый cписок ВАК
|
|
|