Go Package sync: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
Line 11: Line 11:


Do not communicate by sharing memory. Instead, share memory by communicating.
Do not communicate by sharing memory. Instead, share memory by communicating.
Also see: {{Internal|Go_Concurrency#Programming_Models|Go Concurrency Programming Models}}


=Memory Access Synchronization Primitives=
=Memory Access Synchronization Primitives=

Revision as of 23:30, 15 January 2024

External

Internal

Overview

The sync package provides synchronization primitives to use when synchronization between goroutines is necessary. However, other than the Once and WaitGroup types, most sync primitives are intended for use by low-level library routines. Higher level synchronization is better done via channels and communication. Regarding Mutexes, the sync package implements them, but the language designers expressed their hope that Go programming style will encourage people to try higher-level techniques. In particular, programmers should structure their program so that only one goroutine at a time is ever responsible for a particular piece of data.

Do not communicate by sharing memory. Instead, share memory by communicating.

Also see:

Go Concurrency Programming Models

Memory Access Synchronization Primitives

Mutex

Mutex

RWMutex

RWMutex

Thread Synchronization Primitives

WaitGroup

WaitGroup

Once

Once

Cond

Cond