Shared memory is the traditional way that threads use for communicating with each other. Go comes with built-in synchronization features that allow a single goroutine to own a shared piece of data. This means that other goroutines must send messages to this single goroutine that owns the shared data, which prevents the corruption of the data! Such a goroutine is called a monitor goroutine. In Go terminology, this is sharing by communicating instead of communicating by sharing.
This technique will be illustrated in the sharedMem.go program, which will be presented in five parts. The first part of sharedMem.go has the following Go code:
package main import ( "fmt" "math/rand" "sync" "time" )
The second part is the following:
var readValue = make(chan int) var writeValue = make(chan int) func SetValue...