|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.02.2016, 13:55 | #1 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
Возможно ли узнать состояние мьютекса, не входя в него?
Добрый день. Вопрос по сабжу. Сразу оговорюсь, интересует именно виндовый объект синхронизации, не POSIX (там такая возможность имеется). Если есть такая апи-функция, возвращающая состояние мьютеса в момент вызова (без вхождения в мьютекс), либо иной способ, буду признателен!
"ковыряю изнутри" (с)
|
29.02.2016, 14:02 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Нет, такой возможности нет.
А смысл? |
29.02.2016, 14:17 | #3 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
смысл есть: например абстрактная ситуация, когда следует узнать, возможно ли обратиться к каким-то данным или начать какой-то процесс. Для этого достаточно узнать состояние мьютекса (речь о нем конкретно в данном топике) - сигнальное или нет. Например, с критической секцией это возможно.
"ковыряю изнутри" (с)
|
29.02.2016, 14:22 | #4 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
лучше не разделять получение ресурса с проверкой состояния.
потому что вы можете попасть в ситуацию что мютекс свободен в проверке, а к моменту захвата уже нет. потому пытайтесь захватить, вышло значит можно работать с ресурсом, иначе нет.(захват без ожидания) Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
29.02.2016, 14:26 | #5 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
Пепел Феникса, вы пояснили причину, это понятно. Однако будет работать такой пример: gui не может начать выполнять задание, пока поток не отработает. Т.е захватчиков ресурсов одномоментно может быть только 1. Вопрос остался открытым - реально ли получить состояние мьютекса? если да, то как. Спасибо.
"ковыряю изнутри" (с)
|
29.02.2016, 14:51 | #6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
не путайте мютексы с флагами. без захвата никак, и это верно. ИМХО. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
29.02.2016, 15:41 | #7 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
Чтож, спасибо и на этом. Ответа на интересующий вопрос я не получил. Тему можно закрыть.
"ковыряю изнутри" (с)
|
29.02.2016, 17:18 | #8 | ||
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Цитата:
Если вы имеете ввиду TryEntryCriticalSection ето несколько иное - это захват критической секции, можете ровно так же сделать и с мьютексом. Кроме того, эта абстрактная ситуация точно так же абстрактно может не работать. Например вы проверили мьтекс, увидили, что он не захвачен, после чего запустили обработку но в это время мьютекс был захвачен кем-то другим - и что делать? Ответ на ваш вопрос вы получили ровно в первом же ответе. Цитата:
Последний раз редактировалось Пепел Феникса; 29.02.2016 в 18:14. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
узнать состояние переменной из другого потока | Antony41 | Общие вопросы Delphi | 20 | 18.06.2015 12:00 |
Узнать состояние TPopupMenu | Alter | Компоненты Delphi | 2 | 07.03.2011 13:21 |
Узнать состояние кнопок мыши | Cold_Night | Общие вопросы Delphi | 3 | 07.06.2009 21:36 |
Узнать состояние подключения | Hottabych | Работа с сетью в Delphi | 8 | 03.03.2008 18:10 |
можно ли узнать имя HTML-поля, кликнув на него? | furstenberg | Работа с сетью в Delphi | 0 | 28.01.2008 16:49 |