Запуск тяжелых приожений
-
SVN r. 2489 - чо.
Mario
В код не вникаем, выводы делаем сразу ? Реагируем на change_task как на красную тряпку, а в упор не видим ? А как без change_task переключится на другую задачу ? Я не в курсе.
Объясняю.
mutex_lock() проверяет состояние счётчика блокировок MUTEX.count и если мьютекс уже занят, добавляет текущий поток в очередь ожидания мьютекса (cli в этом случае необходима если только ты не ССЗБ.) после чего устанавливает значение TASKDATA.state, чтобы планировщик больше не переключался на эту задачу пока мютекс не будет освобождён. По этой причине код чуть сложнее твоего цикла с опросом.
В код не вникаем, выводы делаем сразу ? Реагируем на change_task как на красную тряпку, а
Code: Select all
mov [edx+TASKDATA.state], 1
Объясняю.
mutex_lock() проверяет состояние счётчика блокировок MUTEX.count и если мьютекс уже занят, добавляет текущий поток в очередь ожидания мьютекса
Code: Select all
list_add_tail esp, ecx ;esp= new waiter, ecx= list
Last edited by Serge on Thu Mar 22, 2012 4:43 am, edited 2 times in total.
Это не мой цикл с опросом - этот код изобрел не я. Третий раз уже между прочим говорю.
Ну, раз:
Ну, раз:
пусть будет так, но насчет:Serge wrote:чтобы планировщик больше не переключался на эту задачу пока мютекс не будет освобождён
это ты конечно погорячился.Serge wrote:По этой причине код чуть сложнее твоего цикла с опросом.
SVN r. 2500 - исправление р.2489
З.Ы. Новые ядреные мьютексы опасны для мозга...
З.Ы. Новые ядреные мьютексы опасны для мозга...
Who is online
Users browsing this forum: No registered users and 30 guests