Как мы можем использовать каналы в Go вместо мьютекса?

Каналы объединяют коммуникацию - обмен значениями - с синхронизацией, гарантируя, что два вычисления (горутины) находятся в известном состоянии.

Как это возможно. использовать каналы в Google Go для выполнения функций мьютекса?

package main

import "sync"

var global int = 0
var m sync.Mutex

func thread1(){
    m.Lock()
    global = 1
    m.Unlock()
}

func thread2(){
    m.Lock()
    global = 2
    m.Unlock()
}

func main(){
   go thread1()
   go thread2()
}
14
задан Flimzy 13 July 2017 в 19:33
поделиться