У меня есть куча функций в программе Go, работающей над структурой, которая использует мьютекс для управления параллельным доступом к своим функциям.Устранение дублирования блокировки мьютекса в Go
Некоторые из этих функций, которые работают с определенными данными, нуждаются в блокировках и тем самым используют mutex.Lock(), чтобы получить мьютекс, который управляет доступом к этим данным. Сегодня я столкнулся с проблемой, когда два из этих методов блокировки называют друг друга. Как только mutex.Lock() вызывается во второй раз, он блокирует - конечно.
Проблема я столкнулся очень похож на этот код: http://play.golang.org/p/rPARZsordI
Есть ли лучшие практики в Go о том, как решить эту проблему? Насколько я знаю, рекурсивные блокировки недоступны в Go.
Есть один метод, который блокирует, записывает и отпирает, и пусть все другие методы используют, что один. – thwd