Вверх ↑
Разработчик
Ответов: 26305
Рейтинг: 2146
#1: 2009-07-24 02:47:07 ЛС | профиль | цитата
Galkov писал(а):
Нахрена оно там тогда вообще стоит - это только тебе известно

Это почему же

Рихтер писал(а):
Вместо EnterCriticalSection Вы можете воспользоваться;

BOOL TryEnterCriticalSection(PCRITICAL_SECTION pcs);

Эта функция никогда не приостанавливает выполнение вызывающего потока. Но возвращаемое ею значение сообщает, получил ли этот поток доступ к ресурсу. Если при ее вызове указанный ресурс занят другим потоком, она возвращает FALSE

Galkov писал(а):
Ее нет, никогда не вернет

Запусти пример, который я сделал по твоим зарисовкам, расставь debug-и и посмотри, ворачивается ли там False и сколько раз Фиг там запустишь второй раз цикл, пока в первом потоке он не отработает
------------ Дoбавленo в 03.03:
И еще вопрос, который уже задавался -- зачем переводить поток в режим ожидания, когда просто можно проверить доступность ресурса, а если он занят, то продолжить дальнейшую очередь событий не останавливая поток. Тут было два пути решения, либо виснем на ожидании доступности, либо продолжаем выполнять дальше свои действия по циклу и ждать, пока не освободится
------------ Дoбавленo в 03.11:
ПМСМ. Необходимо, чтобы кто-то еще просмтрел код и пример и сказал, выполнет ли данный компонент функцию защиты или нет. В данной реализации используются метод не торможения потоков и перевод их в режим ожидания, а необходимость циклического опроса состояния доступности. Это две разные концепции, и я не вижу ни за, ни против, ни против той, ни против другой, они обе имеют право на существование
карма: 22

0