Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование сигналов в разных библиотеках 
:(
    Опции темы
olegusrocks
Дата 23.7.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.7.2008

Репутация: нет
Всего: нет



Суть проблемы следующая:
В своей библиотеке создал функцию, которая прикрепляет к сигналу SIGALRM свой обработчик. Выглядит все так:

...
::signal(SIGALRM, SigHandler);
::pthread_kill(thread->id, SIGALRM);
...

проблема в том, что другие библиотеки тоже могут использовать для SIGALRM свой обработчик, и вполне реально, что между формированием и отправкой сигнала другая библиотека прикрепит к сигналу свой обработчик, и тогда нарушится работа программы.
Как можно избежать подобной ситуации, при этом все равно используя SIGALRM?

буду благодарен всем ответившим smile 
PM MAIL   Вверх
EnergoHokum
Дата 24.7.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Про сигналы в Linux, а именно:

Для функций, обрабатывающих потоки, существует и еще одно важное требование – реентерабильность. Поскольку обработчик сигнала может быть вызван в любой точке выполнения программы (а при не кототорых условиях во время обработки одного сигнала может быть вызван другой обработчик сигнала) в обработчиках додлжны использоваться функции, которые удовлетворяют требованию реентерабельности, то есть, могут быть вызваны в то время, когда они уже вызваны где-то в другой точке программы. Фактически, требование реентерабельности сводится к тому, чтобы функция не использовала никаких глобальных ресурсов, не позаботившись о синхронизации доступа к этим ресурсам.

И ещё немного: начиная с Linux 2.6.6-mm2... для каждого процесса существует отдельная очередь сигналов, размер которой задаётся с помощью RLIMIT_SIGPENDING.

Это сообщение отредактировал(а) EnergoHokum - 24.7.2008, 09:11
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0384 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.