Ich versuche verwenden "sync.mutex" schützen meine Funktion, aber ich stellte fest, dass die Sperre immer noch den Anrufer verwendet, um es zu zerstören.In Golang, wie kann ich mein eigenes Schloss vor der Zerstörung durch den Anrufer schützen?
var mutex sync.mutex
Dies ist Fehler:
//caller use
func a() {
for i := 0; i < 10; i++ {
go b(i)
}
}
//My func
func b(i int) {
mutex.Lock()
fmt.Println(i)
mutex.Unlock()
}
dieser Erfolg ist, aber meine Kapselungsmethode zerstört:
//caller use
func a() {
for i := 0; i < 10; i++ {
mutex.Lock()
go b(i)
}
}
//my func
func b(i int) {
fmt.Println(i)
mutex.Unlock()
}
Dank
ein Mutex sollte gesperrt und entsperrt aus dem gleichen Codeblock, wenn überhaupt möglich. – Adrian