Presentation is loading. Please wait.

Presentation is loading. Please wait.

Go Language * Go - Routines * Channels. New Concepts Do not communicate by sharing memory; instead, share memory by communicating. creating shared memory.

Similar presentations


Presentation on theme: "Go Language * Go - Routines * Channels. New Concepts Do not communicate by sharing memory; instead, share memory by communicating. creating shared memory."— Presentation transcript:

1 Go Language * Go - Routines * Channels

2 New Concepts Do not communicate by sharing memory; instead, share memory by communicating. creating shared memory VS sharing by communication channels. Lightweight Threads (Goroutines)

3 Goroutines a Go function or method executing concurrently in the same address space as other goroutines OR it is a function executing in parallel with other goroutines in the same address space It's not the same as a thread, coroutine, process, etc. It's a goroutine. [New term]

4 Goroutines Goroutines are cheap. at least for now, goroutines are pthreads BUT In 6g, they're multiplexed onto threads. So, one OS Thread could handle more than one goroutines [Lightweight thread] Their stacks are small (a few kB) and grow as needed.

5 Goroutines Example in C (Threads) In Go, Goroutines are cooperatively scheduled by the Go scheduler

6 Goroutines A running program consists of one or more goroutines. Their design hides many of the complexities of thread creation and management. (mutex, queues etc.) When a goroutine executes a blocking system call, no other goroutine is blocked.

7 Communication (Channels) Go has a type called a channel that provides communication and synchronization capabilities. A channel provides a mechanism for two concurrently executing functions (goroutines) to synchronize execution and communicate by passing a value of a specified element type

8 Communication (Channels) In its simplest form the type looks like this: chan elementType So to create a channel that can pass an integer : var channel_object_name = make(chan int) communication operator : <- channel <- value \\ send value var get = <-channel \\ receive value

9 Communication (Channels) Unbuffered channel ch := make(chan int) \\ one element only Buffered channel: ch := make(chan type, value) value : determine how many elements can be held


Download ppt "Go Language * Go - Routines * Channels. New Concepts Do not communicate by sharing memory; instead, share memory by communicating. creating shared memory."

Similar presentations


Ads by Google