четверг, 8 июля 2010 г.

Простая задачка на безопасность и синхронизацию

Это перевод A quick puzzle about security and synchronization. Автор: Реймонд Чен.

Эта головоломка всплыла в одной из наших внутренних групп обсуждения.

// в процессе А
hEventA := CreateEvent(0, False, False, 'MyNamedEvent');

// в процессе Б
hEventB := OpenEvent(EVENT_MODIFY_STATE, False, 'MyNamedEvent');
WaitForSingleObject(hEventB, INFINITE);
В процессе Б OpenEvent успешно открывает событие, но WaitForSingleObject возвращает управление немедленно, вместо ожидания. Объясните.

2 комментария:

  1. Анонимный8 июля 2010 г., 6:05

    Нужно SYNCHRONIZE

    ОтветитьУдалить
  2. Сунулся в хелп. Вроде бы под NT дескриптор B не даёт нам права на ожидание. В 5 строчке надо EVENT_ALL_ACCESS.

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.