Здраствуйте !
Вопрос по синхронизации потоков реального времени по сигналам.
Тестовая задача:
-создать 2 потока реального времени.
- интервал запуска потока обеспечивается интервальным таймером.
- каждый потока имеет:
свой таймер,временной интервал, приоритет, сигнал реального времемени (из диапазона SIGRTMIN SIGRTMAX).
Таймер по истечении временного интервала генерирует событе со своим номером.
Поток находится в режиме ожидания сигнала от таймера ( sigwait(&set, &sigw)
.
По приходу сигнала от таймера , поток должен выполнить определённые опрерацию
(у меня увеличть счетчик).
Если использовать в задаче специальные сигналы SIGRTMAX + 7,SIGRTMAX + 8 ,то задача выполняется.
Если использовать сигналы реального времени SIGRTMIN+1,SIGRTMIN+2 , то задача не выполняется
Потоки переходят в режим SUSPEND и работают только по нажатию кнопки RESUME. (см. скриншот )
При этом в процессе сделан перевод сигналов реального времени в специальные сигналы по документации.
(Операционная система реального времени QNX Neutrino 6.5.Системная архитектура.
Межзадачное взаимодействие в ОС QNX Neutrino. События.)
Текст из программы:
struct sigaction action;
sigemptyset(&set);
sigaddset(&set,SIGNALTIMER100);
sigaddset(&set,SIGNALTIMER50);
act.__sa_un._sa_handler= SIG_DFL;
act.sa_flags =SA_SIGINFO;
sigaction(SIGNALTIMER100, &act, NULL);
sigaction(SIGNALTIMER50, &act, NULL);
sigprocmask(SIG_BLOCK, &set, NULL);//
Подскажите где ошибка ? Может дадите ссылку на пример реализации таких потоков?
Почему сигналы не становятся "специальными".
Текст программы прикладываю.