Re: Spin locks
- From
- Gennady Mayko ()
- To
- Serge Rumyantsev
- Date
- 2002-07-01T23:49:14Z
- Area
- SU.WINDOWS.NT.PROG
From: "Gennady Mayko" <gennady.mayko@broadcom.com>
Добрый день!
Mon Jul 01 2002 16:46, Serge Rumyantsev wrote to Eugene Muzychenko:
SR> From: "Serge Rumyantsev" <SRumyantsev@flagship.ru>
SR> void CriticalSection::Enter (void) {
SR> [skip]
SR> }
>> Смысл в том, что пpи свободном Spin Lock'е CurrentProcessor имеет
SR> значение -1,
>> что заведомо не совпадает ни с одним из номеpов pеальных пpоцессоpов. В
>> пpинципе, пpовеpку на DISPATCH_LEVEL отсюда можно и убpать :)
SR> а если на однопроцессорной машине, то процессор один и тот же а поток
SR> другой?
SR> тогда такой подход приведет к ошибочному входу в защищаемый блок...
--
Думаю, что ничего страшного на однопроцессорной машине не произойдет. Как
только мы вошли в захваченный блок (т.е. после вызова функции
KeAcquireSpinLock), IRQL будет поднят до DISPATCH_LEVEL и переключения на
другие потоки просто не будет, пока мы не выйдем из захваченного блока
(наверняка где то бужет вызвана функция KeReleaseSpinLock).
SR> Serge.
С уважением,
Геннадий Майко.
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)