Межпроцессное взаимодействие в C

У меня есть сценарий, где один процесс должен ждать сигнала от другого процесса, и это ожидание должно быть блокирующим ожиданием, и как только он получает сигнал, он должен проснуться.

Однако с такими механизмами, как kill() или raise(), первый процесс переходит в состояние ожидания, но периодически проверяет по истечении заданного промежутка времени, произошло ли четное/сигнал или нет, и решает ждать или продолжать. Мое требование немного жесткое, я хочу, чтобы процесс просыпался в тот же момент, когда получен сигнал.

Пожалуйста, предложите что-нибудь.


person vibhor    schedule 09.02.2015    source источник


Ответы (1)


Этого можно добиться с помощью семафора, мьютекса или условной переменной. Или вы можете написать функцию ожидания и сигнала самостоятельно, и вы можете контролировать их поведение в соответствии с потребностями. Для справки см. здесь: примеры IPC Концепция и примеры IPC
Мьютексы и условные переменные

person Abhijatya Singh    schedule 09.02.2015
comment
Спасибо за ваше предложение. Мы попробовали IPC, но вот проблема, с которой мы столкнулись: 1. Мы не можем использовать ожидание занятости для непрерывной проверки разделяемой памяти, так как нам нужно, чтобы процесс действительно выполнял ожидание блокировки. 2. В настоящее время мы можем увеличить время блокировки до минимума 17 мкс для первого процесса, что довольно много, чем нам нужно. На самом деле мы хотим, чтобы в это время был запланирован другой процесс. Насколько я понимаю, процесс занимает по крайней мере минимальное указанное количество времени, прежде чем он выйдет из расписания. Нам нужно уменьшить это. - person vibhor; 11.02.2015