Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Владение критической секцией   Найти похожие ветки 

 
AV ©   (2012-02-28 09:51) [0]

Поток П владеет секцией до момента времени В.
Потоки п1, п2, п3 пытаются в нее же войти в моменты времени в1,в2,в3
, где в1 < в2 < в3 < В
Если потоки овладеют секцией в порядке очереди п1, п2, п3, то почему так, а не, ну, скажем, п2, п3, п1?


 
Сергей М. ©   (2012-02-28 10:01) [1]

Что-то неувязка какая-то ..

П не может владеть секцией, пока ее не отпустит какой-то из потоков п1,п2,п3 , завладевший ею ранее, судя по в1 < в2 < в3 < В

> Если потоки овладеют секцией в порядке очереди п1, п2, п3, то почему так

Именно потому что в1 < в2 < в3


 
RWolf ©   (2012-02-28 10:03) [2]


> Если потоки овладеют секцией в порядке очереди п1, п2, п3,
>  то почему так, а не, ну, скажем, п2, п3, п1?

неасколько я знаю, такое поведение не регламентируется, поэтому я бы на него не рассчитывал.


 
AV ©   (2012-02-28 10:11) [3]

> Сергей М. ©   (28.02.12 10:01) [1]
не,
> Поток П УЖЕ владеет секцией до момента времени В.


> Именно потому что в1 < в2 < в3

т.е. он где то завку что ли устанавливает? т.е. кто ранее заявил, тот и первее будет?


 
AV ©   (2012-02-28 10:14) [4]


> неасколько я знаю, такое поведение не регламентируется,
> поэтому я бы на него не рассчитывал

вот я и задумался.
По моему тоже. Но это критично. т.е. надо ли предусмотреть вариант, что не важно когда ты подал заявку на владение - получишь тогда, когда ОС будет это угодно.
Или же приоритет есть.


 
Dimka Maslov ©   (2012-02-28 10:46) [5]

Тогда надо уже не с критическими секциями работать, а с семафорами или событиями. Скажем, есть управляющий поток, рабочие потоки, для которых есть события возобновления работы, и общее для всех событие прекращения работы. Подойдя к "критической секции" рабочий поток информирует о начале ожидания управляющий и начинает ждать своего события. Управляющий поток, следит за очередью, выставляет соотв. событие и ждёт события завершения рабочего потока. Дождавшись его снова лезет в очередь и поднимает очередной событие. Как-то так надо в моём понимании поступать, если очерёдность важна.


 
AV ©   (2012-02-28 11:02) [6]


> Dimka Maslov ©   (28.02.12 10:46) [5]

ну да.
Но если гарантируется
> > Именно потому что в1 < в2 < в3
то зачем..

+ мне пока легче на независимость порядка владения переписать :)


 
AV ©   (2012-02-28 11:04) [7]

по экспериментам, пока получается 1,2,3 или 1,2 или 1,3 или 2,3
, короче, по очереди пока все.


 
Eraser ©   (2012-02-28 11:13) [8]

> [0] AV ©   (28.02.12 09:51)

читай MSDN там все написано. от ОС еще зависит.


 
AV ©   (2012-02-28 11:27) [9]

да.

When a thread owns a critical section, it can make additional calls to EnterCriticalSection or TryEnterCriticalSection without blocking its execution. This prevents a thread from deadlocking itself while waiting for a critical section that it already owns. To release its ownership, the thread must call LeaveCriticalSection one time for each time that it entered the critical section. There is no guarantee about the order in which waiting threads will acquire ownership of the critical section.

но спросить же, привычнее :)
к тому же ,комьюнити поддерживается, так сказать :))

Всем спасибо!



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.063 c
15-1351583639
AV
2012-10-30 11:53
2013.03.22
При компиляции проектов консольное окно появляется


15-1346255072
Artem
2012-08-29 19:44
2013.03.22
MessageDlg в Visual C++


15-1353223486
AV
2012-11-18 11:24
2013.03.22
Как правильно сказать по- английски


2-1342945485
Ярослав
2012-07-22 12:24
2013.03.22
Склейка формы


15-1340742603
Юрий
2012-06-27 00:30
2013.03.22
С днем рождения ! 27 июня 2012 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский