Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#46: 2009-07-24 04:33:01 ЛС | профиль | цитата
nesco писал(а):
Но как приписать имя критической секции, если она его не поддерживает

Прошу прощения, а ты "чертежник", или "конструктор"
Первый начинает с рисования, а второй с подумать

Ну супер-задача, блин - сделать глобальный StrListEx, Objects которого указывает на динамически созданные кр.секции. Или самому опять никак, надо пальцем ткнуть в hiGlobalVar.pas ???
Это кодинг.
А интерфейс - так тебе все уже давно сказали: событие onWaitFailed с кодами ошибки в потоке (WAIT_ABANDONED, WAIT_FAILED, WAIT_TIMEOUT)
Кстати говоря, обрати внимание, Великий Мастер Чтения Учебников - WAIT_TIMEOUT, а не WAIT_DELAY
У себя я еще добавил событие успешного завершения - onSafeEnd. Тоже рассказать зачем, или сам догадаешься ???

Ждать/не ждать...
"Не ждать" для мьютекса - это св-во TimeOut=0. Для кр.секций нет такого многообразия, есть только 0, и INFINITE. Соответственно, если TimeOut=0 - это TryEnterCriticalSection, а TimeOut>0 - EnterCriticalSection. Например.
Ну неужели самому интерфейс пользователя сформулировать настолько сложно, непойму....


карма: 9

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#47: 2009-07-24 08:56:25 ЛС | профиль | цитата
Galkov писал(а):
Или самому опять никак, надо пальцем ткнуть в hiGlobalVar.pas ???

Да, я так и подумал, когда ты написал про защиту из нескольких веток и именно на примере GlobalVar. Вот и хорошо, что ты это это подтвердил, у меня исчезли сомнения по этому поводу.
Galkov писал(а):
Ну неужели самому интерфейс пользователя сформулировать настолько сложно, непойму....

Нет, не сложно, мне было интересно мнение о возможности применения двух концепций ждать/не ждать

Вот только одно мне осталось непонятным -- зачем устраивать показательные выступления по маканию оппонента в грязь, когда можно было просто озвучить свою концепцию и методы ее реализации.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#48: 2009-07-24 12:00:35 ЛС | профиль | цитата
Вообще-то, показательными они стали только после того, когда без показывания начался базар про г-но, про то, что я всегда прав, и т.п..
Пока не покажешь - только такая реакция, оказывается.

И никто тебя никуда не макал
Где ты есть, там ты и находишься - и это место определяется тем, что ты написал. Как оно называется мне даже и не интересно.
Обрати внимание: не я написал, а ты.
карма: 9

0
Ответов: 9906
Рейтинг: 351
#49: 2009-07-25 19:58:22 ЛС | профиль | цитата
Dilma писал(а):
и давать пользователю событие onWaitFailed (это когда результат не равен WAIT_OBJECT_0)

Есть одна тонкость
При WAIT_ABANDONED все-таки происходит захват мьютекса (в отличие от WAIT_TIMEOUT и WAIT_FIALED), и в этом случае следует обязательно делать ReleaseMutex

И еще, наверное, было бы правильно предоставить пользователю возможность "спаять" схему так, чтобы WAIT_ABADONED работал эквивалентно с WAIT_OBJECT_0 .....
карма: 9

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#50: 2009-07-25 20:32:27 ЛС | профиль | цитата
Galkov, а как же вот это

Rihter писал(а):
Тогда Wait-функция возвращает потоку WAIT_ABANDONED вместо WAIT_OBJECT_0, и тот узнает, что мьютекс освобожден некорректно. Данная ситуация, конечно, не самая лучшая. Выяснить, что сделал с защищенными данными завершенный поток — бывший владелец объекта-мьютекса, увы. невозможно


Ну натворил что-то там поток с данными и свалился не освободив мьютекс, а что он там натворил, мы-то не знаем. А к данным полез уже второй поток, не приведет ли это к каким-либо нежелательным результатам, данные-то могут быть некорректными
карма: 22

0
Ответов: 9906
Рейтинг: 351
#51: 2009-07-25 21:08:03 ЛС | профиль | цитата
Да так, что данная цитата была бы адекватна, если бы я предложил сделать чтобы всегда WAIT_ABANDONED работал эквивалентно с WAIT_OBJECT_0 .....
Предложено было другое: предоставить пользователю возможность

Решение, что правильно, а что нет - за пользователем (автором схемы), а не за автором элемента.

карма: 9

0
51
Сообщение
...
Прикрепленные файлы
(файлы не залиты)