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