没有合适的资源?快使用搜索试试~ 我知道了~
flameddd#blog#2019-09-05:Triton:一些關於 Golang 的 channel1
需积分: 0 0 下载量 93 浏览量
2022-07-25
14:27:44
上传
评论
收藏 4KB MD 举报
温馨提示
试读
首先:- Channel 和 Mutex 的應用場合是完全不同的 -> 本身不具可比性的Golang Channel / MPI library 也好- (別名
资源推荐
资源详情
资源评论
## Triton:一些關於 Golang 的 channel
今天要舉的事例是:Golang 狂熱者的過分 channel 迷戀
- 新手邏輯:所以就凡事應該用 Channels,yeah~
- 「Channels orchestrate」,那不就代表好棒棒沒問題囉。
- 「Mutexes serialize」,那不就代表只能單線程運作,效能很差很不好囉。
認真地回應:Channels orchestrate; Mutexes serialize
首先:
- Channel 和 Mutex 的應用場合是完全不同的 -> 本身不具可比性的
### Channel 的應用場景:
Golang Channel / MPI library 也好
- 其中一個主要應用場景就是Thread pool Pattern
- (別名:Manager-worker pattern)
最簡單例子:PHP FRM就是囉
具體舉例囉:
有一個很巨型的 input array
- 我們要把 array 內的每一個 item 都需要 gunzip 後放到對應的 output array 中
```golang
// package variable
var taskChannel chan task
// 請用 goroutine 去預先打開 N 個worker thread
func workerThread() {
for t := range taskChannel {
i := t.index
t.output[i] = gunzip(t.input[i])
t.wg.Add(-1)
}
}
// manager thread
func ArrayGunzip(input array, output array) {
waitgroup := sync.NewW
点击阅读更多
资源评论
设计师马丁
- 粉丝: 15
- 资源: 299
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功