СТА 2/2010

● счётный – сколько раз подадим сигнал на семафор, столько раз он и сработает; ● событие – после установки такого се мафора он остаётся в активном сос тоянии до тех пор, пока его не сбро сят вручную (если рассматривать применение такого семафора для уп равления потоком, то, устанавливая семафор, мы запускаем работу пото ка, а сбрасывая – останавливаем, но только перед следующим циклом); ● ресурс – этот тип семафора специ ально предназначен для управления ресурсами; ОС отслеживает, чтобы захват и освобождение таких сема форов производились одним и тем же потоком; также гарантируется, что приоритет потока, занявшего ре сурс, будет по крайней мере макси мальным из приоритетов потоков, этот ресурс ожидающих; ● мьютекс – тип ресурсного семафора, единственное отличие которого за ключается в том, что владеющий мьютексом поток может захватить мьютекс ещё раз. Следующие функции предоставляют удобный согласованный интерфейс для использования семафоров: ● RTKCreateSemaphore – создание се мафора; ● RTKSignal – запись в семафор одно го сообщения; ● RTKWait – синхронное ожидание се мафора; ● RTKWaitCond – асинхронное ожида ние семафора; ● RTKWaitTimed – ожидание семафо ра в течение заданного промежутка времени; ● RTKPulse – запуск всех потоков, ожидавших семафор, и немедленный сброс этого семафора; ● RTKResetEvent – сброс семафора; ● RTKDeleteSemaphore – удаление се мафора. Для работы с почтовыми ящиками используются следующие функции: ● RTKCreateMailbox – создание почто вого ящика; ● RTKDeleteMailbox – удаление поч тового ящика; ● RTKClearMailbox – очистка почто вого ящика. Для управления сообщениями есть такие функции: ● RTKPut – синхронная функция пе редачи сообщения (поток, в котором была вызвана эта функция, останав ливается до тех пор, пока в почтовом ящике не появится место для сооб щения); ● RTKPutCond – асинхронная функ ция отправки сообщения (если в почтовом ящике места нет, то сооб щение не передаётся; эту функцию можно использовать для передачи данных из прерываний драйверов); ● RTKPutTimed – сообщение не попа дает в очередь, если по истечении за данного времени в очереди так и не появилось свободного места (функция возвращает управление, как только поставит сообщение в очередь или когда истечёт заданное время). Аналогичная группа функций есть для приёма сообщений: RTKGet, RTK GetCond, RTKGetTimed. Для управления сообщениями есть ещё две функции, которые также могут быть очень полезны: ● RTKPutFront – сообщение кладётся в начало очереди (функция синхрон ная, её можно использовать для пе редачи срочных сообщений); ● RTKNextCond – просмотр сообще ния из почтового ящика (эта функ ция отличается от RTKGetCond тем, что не выбирает сообщение, а только создаёт его копию). Рассмотрим, где для управления по током лучше использовать семафор, а РАЗ РА БОТ КИ / МАШИНОС Т РОЕ НИЕ 69 СТА 2/2010 www.cta.ru (495) 234 0636 ● info@prosoft.ru ● www.prosoft.ru ОФИЦИАЛЬНЫЙ ДИСТРИБЬЮТОР ПРОДУКЦИИ TDK LAMBDA Реклама Тел.: (495) 234 0636 • Факс: (495) 234 0640 • E mail: info@prosoft.ru • Web: www.prosoft.ru # 220 © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy