![8ca203c8eba0a6104409388324837846.png](https://i-blog.csdnimg.cn/blog_migrate/1ea4d3652e86ed1845a9e074bc5fd63e.png)
![9a3f59e643d141705937638668901f37.png](https://i-blog.csdnimg.cn/blog_migrate/b6ce05ebf1e83ceff878a451230c0c57.jpeg)
![e1e9f10ef049de70749471dc683bc6d3.png](https://i-blog.csdnimg.cn/blog_migrate/3e3741a7e6b719b861050ce24edf49f7.jpeg)
![670c43720cc6190e4a7f74d9e8f0edc9.png](https://i-blog.csdnimg.cn/blog_migrate/6712b7fcd71d8f1d1de066ad89b16778.jpeg)
并行计算
协程
协程是一张轻量级的线程,通过Channel实现多个任务之间的通信。
Channel可以看作是一个管道,一端可读,一端可写。
- 不同的task可以通过
put!
往同一个channel中并发地写入 - 不同的task也可以通过
take!
从同一个 channel 并发地取数据
Channel的定义方式
# Channel(func::Function, ctype=Any, csize=0, taskref=nothing)
c1 = Channel(32)
c2 = Channel{Float64}(32)
put!(c1, 1)
put!(c2, 2)
take!(c2)
>>2.0
关闭Channel,关闭后就不能再写入
close(c1)
put!(c1, 3)
>>error
但可以读出,fetch
只能读第一个数据,但不会把该数据从Channel中删除,但take!
会读出后删除。
- 如果一个 Channel 是空的ÿ