У меня есть два семафора x
(изначально на 1) и y
(первоначально на 0).Семафор Синхронизация
Мой нить код функции несколько, как это:
...
wait(x);
//setting some vars
signal(x);
wait(y);
...
Я хочу, чтобы гарантировать, что нити ждать y
в строке, то есть. если первая нить завершила первый этап защиты x
, сначала нужно подождать y
, & и так далее. В текущей реализации контекстный коммутатор, возникший после signal(x);
, может помешать этому.
Есть ли способ сделать это, или мне нужно полностью перестроить код, чтобы предотвратить это событие?