Вот канал, основанный на решении Atom. Сделайте это перед тем, как начинать свои программы:
doingFileModificationJobs := make(chan bool, 1)
doingFileModificationJobs <- false
, а затем передать этот канал в качестве параметра при запуске процедур. Обратите внимание, что есть только один канал. Все программы используют один и тот же канал.
Это позволит вам использовать этот канал как мьютекс. Замените свой псевдокод,
critical section{
с
<-doingFileModicationJobs
и затем замените соответствующую закрывающую скобку псевдокода критической секции на
doingFileModications <- false
Это хорошо читается таким образом и является более описательным, чем общие термины, такие как «мьютекс» или «критическая секция».
Это сериализует ваши задания по модификации файлов и гарантирует, что их может выполнять только одна процедура за один раз. Я думаю, что это общая концепция критического раздела, но если вам действительно нужны другие программы для остановки, даже если они просто выполняют задания по отправке сообщений, это другая проблема.