Go ਦੋ ਤਰੀਕੇ concurrency safety ਦੇ ਲਈ ਦਿੰਦਾ ਹੈ: channels ("share memory by communicating") ਅਤੇ sync ਪੈਕੇਜ (mutexes/locks ਜੋ ਸਾਂਝੀ memory ਨੂੰ ਸਿੱਧਾ ਸੁਰੱਖਿਅਤ ਕਰਦੇ ਹਨ)। Go ਦੇ channel-ਪਹਿਲੀ ਦਰਸ਼ਨ ਦੇ ਬਾਵਜੂਦ, sync primitives ਅਕਸਰ ਸਾਂਝੀ state ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ ਸਰਲ, ਵਧੇਰੇ ਕੁਸ਼ਲ ਚੋਣ ਹਨ।
sync.Mutex — lock ਦੇ ਨਾਲ ਸਾਂਝੀ state ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰੋ
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
