![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите разобраться с Critical Sections [D5, D7, Win2k, WinXP]
Dust © (2005-08-04 13:29:00)народ, хелп
InitializeCriticalSection(lpCrtlSctn);
EnterCriticalSection(lpCrtlSctn);
после этих строк все остальные потоки должные приостановить свою работу до
LeaveCriticalSection(lpCrtlSctn); ???????????????????????
может быть я не правильно понимаю работу критических секций?...
объясните пожалуйста
Digitman (2005-08-04 13:45:00) [1]
> Dust © (04.08.05 13:29)
т.о. (см. Alexander Panov © (04.08.05 13:39) [2]), проект д.б. организован так чтобы переменная lpCrtlSctn была глобальной - обладала достаточной видимостью для ВСЕХ юнитов, в которых описаны/реализованы поточные ф-ции, заинтересованные в использовании значения этой переменной в вызовах Enter/LeaveCriticalSection
Alexander Panov (2005-08-04 13:39:00) [2]Dust © (04.08.05 13:29)
InitializeCriticalSection(lpCrtlSctn);
EnterCriticalSection(lpCrtlSctn);
после этих строк все остальные потоки должные приостановить свою работу до
LeaveCriticalSection(lpCrtlSctn); ???????????????????????
Не так.
Где-то в программе:
InitializeCriticalSection(lpCrtlSctn);
После этого каждый поток, которому нужно выполнить код между
1*
EnterCriticalSection(lpCrtlSctn);
и
LeaveCriticalSection(lpCrtlSctn);
должен знать этот lpCrtlSctn.
При попытке выполнения кода 1*одновременно несколькими потоками система разрешит выполнять код только одному потоку, остальные переведет в состояние ожидания.
Eraser (2005-08-04 13:33:00) [3]Dust © (04.08.05 13:29)
И какой вопрос?