Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

В Вашем конкретном случае

Отправлено Oldring 02 апреля 2008 г. 14:00
В ответ на: Не упустил. А по поводу самых легковесный средств (+) отправлено SM 02 апреля 2008 г. 13:43

я исходил и исхожу из того, что в качестве альтернативы мьютексу Вами рассматривалась критическая секция (видимо, с вызовом TryEnter...) и была отклонена по причине "слишком больших накладных расходов". Следовательно, это синхронизация нитей в одном процессе. Следовательно, задача - иногда поллить ресурс, и если он вдруг оказался свободным - захватить его, и пусть другие его поллят или ждут. Следовательно, для облегчения такого поллинга можно добавить в программе флаг занятости ресурса, который опрашивать при поллинге, и только тогда, когда он сброшен - пытаться захватить ресурс обращением к более тяжеловесными примитивам синхронизации и последующим взведением этого флага. И есть вероятность, что воспользовавшись InterlockedCompareExchange для захвата этого флага можно было обойтись вообще без тяжеловесной синхронизации в высокоприоритетной нити. Ну разве что для информирования низкоприоритетной нити о наличии новой работы - вызовом SetEvent, причем, только тогда, когда она реально ждет без дела (другой флаг ;) И, кстати, без риска инверсии приоритетов.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
при вычитании трёх из шести получится:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru