Критические секции
От: gid_vvp  
Дата: 23.08.05 07:12
Оценка:
Hi, All.

Вопрос в следующем.
Что будет если один поток ожидает на критической секции а второй в это время её удалил?

Или как правильно удалить критическую секцию?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Критические секции
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 23.08.05 08:04
Оценка:
Здравствуйте, gid_vvp, Вы писали:

_>Hi, All.


_>Вопрос в следующем.

_>Что будет если один поток ожидает на критической секции а второй в это время её удалил?

Что будет, что будет... #$нется всё!

_>Или как правильно удалить критическую секцию?

Пока кто-то с ней работает удалять нельзя вот и вся наука. Как только больше никому не нужна (читай охраняемого ресурса бульше нет) — удаляете...
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re: Критические секции
От: AgIle Россия  
Дата: 23.08.05 08:17
Оценка:
Здравствуйте, gid_vvp, Вы писали:

_>Hi, All.


_>Вопрос в следующем.

_>Что будет если один поток ожидает на критической секции а второй в это время её удалил?

_>Или как правильно удалить критическую секцию?


http://msdn.microsoft.com/library/en-us/dllproc/base/entercriticalsection.asp

Any thread of the process can use the DeleteCriticalSection function to release the system resources that were allocated when the critical section object was initialized. After this function has been called, the critical section object can no longer be used for synchronization.

If a thread terminates while it has ownership of a critical section, the state of the critical section is undefined.

If a critical section is deleted while it is still owned, the state of the threads waiting for ownership of the deleted critical section is undefined.


Т.о. при вызове DeleteCriticalSection Вы не должны владеть критической секцией и должны быть уверены, что ею никто не владеет и не будет владеть.
Re: Критические секции
От: Gomes Россия http://irazin.ru
Дата: 23.08.05 08:18
Оценка:
Здравствуйте, gid_vvp, Вы писали:

_>Что будет если один поток ожидает на критической секции а второй в это время её удалил?


— Доктор! Когда я делаю вот так, у меня здесь болит!
— Не делайте так..
Re: Критические секции
От: vopl Россия  
Дата: 23.08.05 08:33
Оценка:
Здравствуйте, gid_vvp, Вы писали:

_>Что будет если один поток ожидает на критической секции а второй в это время её удалил?


Будет ждать дальше. Объект синхронизации от секции остается в несигнальном состоянии. ИМХО это вообще не правильно — удалять секцию во время использования... Что то типа указателя после delete в с++... но там умные люди умные указатели придумали.

_>Или как правильно удалить критическую секцию?


Как вариант — подождать когда секция освободится, а потом рубить ее...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.