Page 2 of 2
Re: Запуск тяжелых приожений
Posted: Thu Mar 22, 2012 1:55 am
by Mario
SVN r. 2489 - чо.
Re: Запуск тяжелых приожений
Posted: Thu Mar 22, 2012 2:02 am
by Serge
Mario
В код не вникаем, выводы делаем сразу ? Реагируем на change_task как на красную тряпку, а
в упор не видим ? А как без change_task переключится на другую задачу ? Я не в курсе.
Объясняю.
mutex_lock() проверяет состояние счётчика блокировок MUTEX.count и если мьютекс уже занят, добавляет текущий поток в очередь ожидания мьютекса
Code: Select all
list_add_tail esp, ecx ;esp= new waiter, ecx= list
(cli в этом случае необходима если только ты не ССЗБ.) после чего устанавливает значение TASKDATA.state,
чтобы планировщик больше не переключался на эту задачу пока мютекс не будет освобождён. По этой причине код чуть сложнее твоего цикла с опросом.
Re: Запуск тяжелых приожений
Posted: Thu Mar 22, 2012 2:07 am
by Mario
Это не мой цикл с опросом - этот код изобрел не я. Третий раз уже между прочим говорю.
Ну, раз:
Serge wrote:чтобы планировщик больше не переключался на эту задачу пока мютекс не будет освобождён
пусть будет так, но насчет:
Serge wrote:По этой причине код чуть сложнее твоего цикла с опросом.
это ты конечно погорячился.
Re: Запуск тяжелых приожений
Posted: Fri Mar 23, 2012 7:12 pm
by Mario
SVN r. 2500 - исправление р.2489
З.Ы. Новые ядреные мьютексы опасны для мозга...