Я программирую на Unix на C.
У меня есть 3 критические зоны:
Mutex1 -> Lock
{
{ ZONE1
{
Mutex1 -> unLock
Mutex2 -> Lock
{
{ ZONE2
{
Mutex2 -> unLock
Mutex3 -> Lock
{
{ ZONE3
{
Mutex3 -> unLock
Для каждой зоны есть мьютекс. N процессов выполняют этот код, поэтому для управления критическими областями требуются мьютексы. Моя проблема:
SIGINT обрабатывается таким образом -> сигнал (SIGINT, обработчик);
void handler(int sign)
{
exit(0);
}
Если один процесс получает сигнал (например, Ctrl + C) в одном критическомобласть, в которой мне нужно разблокировать мьютекс, просто учитывая, где был процесс, когда он получил сигнал (зона 1, зона 2 или зона 3).
Что я могу сделать, чтобы сделать это?