![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Один и тот же поток в одну и туже крит.секцию
O'ShinW © (2013-02-20 12:01:00)Один и тот же поток может входить многократно в одну и туже крит.секцию, главное, чтобы выходов было столько же. Так?
Игорь Шевченко (2013-02-20 15:58:00) [1]
> да/нет
монетка решит твои сомнения
Inovet (2013-02-20 15:38:00) [2]> [11] RWolf © (20.02.13 15:23)
> и тут секцию перехватывает другой поток
Согласен, туплю.
O'ShinW (2013-02-20 15:37:00) [3]да, именно
> > выходим
> > детектируем
> и тут секцию перехватывает другой поток
Поэтому удаляем из добавления, не выходя.
Удаление, в свою очередь, тоже защищено, потому что можно удалять и извне.
т.е. второй раз войти придется. (не приписывать же методом copy|paste Удаление в Добавление)
Процедура расчета мусора, тоже возможно будет дергать методы,
входящие в крит.секцию.
Возник вопрос о возможной глубине вложенности. Почитал. Засомневался. Спросил. :)
Специально так, чтобы облегчить труд отвечающего:
да/нет
RWolf (2013-02-20 15:23:00) [4]> выходим
> детектируем
и тут секцию перехватывает другой поток, в результате удаляем не то, что планировали.
Inovet (2013-02-20 15:14:00) [5]> [9] O'ShinW © (20.02.13 13:46)
Добавление
входим добавляем выходим
детектируем
вызываем удаление
Удаление
входим удаляем выходим
O'ShinW (2013-02-20 13:46:00) [6]Список,
по переполнению надо удалить что-нибудь ненужное
Добавляем, входя
Детектируем переполнение, высчитываем ненужное
Вызываем удаление, которое вторично входит CS
выходим из удаления
выходим из добавления
Dimka Maslov (2013-02-20 13:25:00) [7]
> А зачем 2 раза в одну и ту же входить?
Потому-что критическая секция это не река, в неё можно войти дважды.
Ega23 (2013-02-20 12:55:00) [8]А зачем 2 раза в одну и ту же входить?
O'ShinW (2013-02-20 12:52:00) [9]Ну, так и понял. Уточнить.
Спасибо.
Dimka Maslov (2013-02-20 12:47:00) [10]С статье говорится о том, что для выхода из критической секции требуется столько раз выйти из неё, сколько раз войдено было. А вот потом уже нет никакой возможности определить какой из ожидающих потоков получит управление. Всё ясно и логично.
O'ShinW (2013-02-20 12:30:00) [11]т.е. так:
......... attempts to enter a critical section without blocking the calling thread.
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.
A thread uses the InitializeCriticalSectionAndSpinCount or SetCriticalSectionSpinCount function to specify a spin .........
вроде как относится к одному абзацу, но при чем тут потоКИ
Тут же про потоК говорится?
O'ShinW (2013-02-20 12:28:00) [12]читал. Собственно потому и спрашиваю.
не понимаю, зачем там последнее предложение
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.
>> монетку подбросить пробовал ?
ценю юмор(, пофиг над кем шутят).
Но тут не понял :)
DVM (2013-02-20 12:21:00) [13]
> O'ShinW © (20.02.13 12:01)
http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682530.aspx
Игорь Шевченко (2013-02-20 12:11:00) [14]монетку подбросить пробовал ?