golang goroutine信号量演示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang goroutine信号量演示相关的知识,希望对你有一定的参考价值。

type Empty interface {}
var empty Empty
...
data := make([]float64, N)
res := make([]float64, N)
sem := make(chan Empty, N)
...
for i, xi := range data {
	go func (i int, xi float64) {
		res[i] = doSomething(i, xi)
		sem <- empty
	} (i, xi)
}
// wait for goroutines to finish
for i := 0; i < N; i++ { <-sem }

golang goroutine和频道的简单演示

package main

import (
	"runtime"
)

func main(){
	runtime.GOMAXPROCS(8)

	ch := make(chan string)
	doneCh := make(chan bool)

	go abcGen(ch)
	go printer(ch,doneCh)

	println("This comes first")
	//

以上是关于golang goroutine信号量演示的主要内容,如果未能解决你的问题,请参考以下文章

golang的goroutine与channel

golang中四种方式实现子goroutine与主协程的同步

Golang 基础:原生并发 goroutine channel 和 select 常见使用场景

Golang 基础:原生并发 goroutine channel 和 select 常见使用场景

golang 读写锁

golang RWMutex读写锁分析