![]()  | 
	
		
 Цитата: 
	
 Скрытый текст 
                
                
                    Postman: Надо кошку завести, она будет всех радовать! 
                
            Механик: Это бесполезное животное будет от меня получать пендаля Postman: Ну это будет же тебя радовать? Механик: Да.... Postman: Значит ее жизнь не будет бессмысленной. (с)башорг  | 
		
 Цитата: 
	
  | 
		
 Цитата: 
	
  | 
		
 Цитата: 
	
 http://s004.radikal.ru/i206/1308/43/a1b6ed31ee96.gif  | 
		
 kravets, проблема рандомизации доступа к ресурсу с использованием мьютекса решилась. 
	В классике каждый поток перед доступом к ресурсу пытается захватить мьютекс и если не получается уходит в спячку, пока мьютекс не освободится и система отдаст мьютекс потоку. Код: 
	if WaitForSingleObject(ResMutex,INFINITE) = WAIT_OBJECT_0 thenСистема отслеживает время непрерывного ожидания и при освобождении мьютекса выбирает тот поток, который дольше всех ждал (при равных приоритетах). А нам нужен случайный выбор. Ну так давайте спутаем все карты системе и будем ждать не непрерывно, а случайно-дискретно. Код: 
	flag:= False;Минус метода - низкое быстродействие, но мне и не нужно быстро. Потоки в среднем раз в секунду обращаются к ресурсу. По сути получилась спин-блокировка с ожиданиями в течение случайных dt. Протестировал в имитационной модели. Статистические показатели отлично сходятся с расчетными.  | 
		
 Цитата: 
	
  | 
		
 kravets, нет, не то же самое. Шаманство с приоритетами косвенно влияет на остальные потоки,  
	которые никакого отношения к доступу ресурсу и вообще к процессу моделирования не имеют.  | 
		
 Цитата: 
	
  | 
		
 kravets, вмешательства в моделирование нет, среднее время ожидания доступа к ресурсу 
	не изменилось. Изменился лишь порядок захвата ресурса - он стал случайным, а не спра- ведливым, как это реализовано в винде. И это как раз то, что и требовалось. Изменение приоритетов - внесение искусственной асимметрии совершенно несвойственной модели. То что делаю я имеет следующую аналогию. Ожидание какого-либо события с поглядыва- нием на часы через случайные интервалы времени. Можно вообще не смотреть на часы и просто ждать, а можно поглядывать - на событие и на всех остальных это никак не влияет.  | 
		
 Цитата: 
	
  | 
		
 kravets, я никак не управляю временем. Оно и правда тикает снаружи, аппаратно. 
	Все моделируемые объекты живут в реальном непрерывном времени. Дискретны и случайны только временные метки, кот. ставятся исключительно только для ОС, чтобы она выбирала на основе времени ожидания с момента последней случайной метки ожидающего объекта, а не с момента, когда понадобился ресурс. И главное, дискретные метки не мешают захватить ресурс в любой момент между метками.  | 
		
 Цитата: 
	
  | 
		
 kravets, стандартная функция ожидания объекта синхронизации (мьютекса в моем случае). 
	Во время ожидания процессорное время не тратится, поток отправляется системой в спячку до того момента, когда либо мьютекс освободится, либо истечет таймаут dt. За мьютексом и за таймаутом следит ОС, и программист при всем желании никак вмешаться в это не может. Пока не произошло ни то, ни другое, ОС предоставляет процессорное время другим потокам. Средняя загрузка процессора потоками, участвующих в процессе моделировании, менее 1%. А все потому что даже когда поток захватывает мьютекс и получает доступ к ресурсу, он не тратит процессорное время, а просто вызывает функцию Sleep с заданным таймаутом, ими- тируя некоторые действия с ресурсом с некоторой длительностью, а реально просто спит, мьютекс при этом захвачен этим потоком, а остальные потоки спят, сидя в Wait-функции. Короче, все потоки практически всё время "спят", включая поток, захвативший мьютекс.  | 
		
 все. баста. на сегодня мне хватит (дров) 
	щас кину курицу в духовку, накопаю картошки с морковкой, помою посуду после обеда, сдерну с веревки шмотки высушенные и буду отдыхать по поводу воскресенья. (сяду и буду делать бумажную работу ибо ножки подо мной уже подгибаются).  | 
		
 Цитата: 
	
  | 
| Текущее время: 09:36. Часовой пояс GMT +3. | 
	Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
	
	© 2001—2025, «Аспирантура. Портал аспирантов»