Можно ли определить владеет ли поток в данной критической секции или нет?
От: Melamed Россия  
Дата: 28.04.23 10:58
Оценка:
Мне нужно в секции catch(..){} определить, владеет ли данный поток в данной критической секции или нет. Можно, конечно лишний раз вызвать функцию LeaveCriticalSection, но в документации на эту функцию написано:

If a thread calls LeaveCriticalSection when it does not have ownership of the specified critical section object, an error occurs that may cause another thread using EnterCriticalSection to wait indefinitely.


Из чего я понял, что если будет вызвана данная функция, когда данный поток не владеет критической секции, то вызов функции EnterCriticalSection может заблокировать поток, что крайне не желательно
Re: Можно ли определить владеет ли поток в данной критической секции или нет?
От: reversecode google
Дата: 28.04.23 11:04
Оценка: -2
https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-tryentercriticalsection
Re: Можно ли определить владеет ли поток в данной критической секции или нет?
От: Melamed Россия  
Дата: 28.04.23 11:58
Оценка: 1 (1) +1 -1
Здравствуйте, Melamed, Вы писали:
Проблема решена благодаря данной статьи Критические секции
Автор(ы): Павел Блудов
Дата: 14.03.2005
В статье рассматриваются аспекты работы с критическими секциями, их внутреннее устройство и способы отладки

M>Мне нужно в секции catch(..){} определить, владеет ли данный поток в данной критической секции или нет. Можно, конечно лишний раз вызвать функцию LeaveCriticalSection, но в документации на эту функцию написано:

M>

M>If a thread calls LeaveCriticalSection when it does not have ownership of the specified critical section object, an error occurs that may cause another thread using EnterCriticalSection to wait indefinitely.


M>Из чего я понял, что если будет вызвана данная функция, когда данный поток не владеет критической секции, то вызов функции EnterCriticalSection может заблокировать поток, что крайне не желательно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.