У меня есть три параллельные подпрограммы, подобные этой,
func Routine1() {
Print (value a, value b, value c)
Print (value a, value b, value c)
Print (value a, value b, value c)
}
func Routine2() {
Print (value e, value f, value g)
Print (value e, value f, value g)
Print (value e, value f, value g)
}
func Routine3() {
Print (value x, value y, value z)
Print (value x, value y, value z)
Print (value x, value y, value z)
}
func main() {
go Routine1(command12, response12, command13, response13)
go Routine2(command12, response12, command23, response23)
Routine3(command13, response13, command23, response23)
}
Теперь, с какой проблемой я сталкиваюсь, иногда может случиться так, что в результате трех одновременных подпрограмм иногда оператор print не выполняется должным образомозначает не печатать целое, есть какая-то вещь, вставленная другим отпечатком.Например, Print (значение a, значение b, значение c) подпрограммы 1 дает выходные данные, такие как значение a, значение b, значение g, где значение g вставляется подпрограммой 2. Кто-нибудь может мне подсказать, как я могу это остановить?Я попробовал процедуру синхронизации-мьютекса.Однако, возможно, мой код слишком длинный, и, возможно, я не могу правильно поставить блокировку-разблокировку, поэтому он вызывает ошибку взаимоблокировки.Кто-нибудь может мне подсказать, как я могу реализовать их простым способом или менее рискованной процедурой sync-mutex.
Более подробную информацию об этой моей проблеме можно найти здесь .