掌握 core.async 实现并发进程
1. 缓冲区的使用
在并发编程中,缓冲区是一个重要的概念。有两种常见的缓冲区:滑动缓冲区(sliding buffer)和丢弃缓冲区(dropping buffer)。滑动缓冲区以先进先出的方式丢弃值,而丢弃缓冲区则以后进先出的方式丢弃值。这两种缓冲区都不会使 >!! 操作阻塞。
以番茄酱厨师为例,使用缓冲区就像厨师有一个架子来放置番茄酱批次。如果使用普通缓冲区,架子满了厨师就得等待空间;使用滑动缓冲区,架子满时会扔掉最旧的一批番茄酱,然后将新批次放入空位;使用丢弃缓冲区,则会把最新鲜的一批番茄酱从架子上拿掉,放入新批次。
缓冲区是核心模型的细化:进程是独立的、并发执行的逻辑单元,对事件做出响应。可以使用 go 块创建进程,并通过通道(channel)进行事件通信。
2. 阻塞与挂起
在 core.async 中, take 函数 < 和 put 函数 > 都有单感叹号和双感叹号两种形式。使用规则如下:
| 操作 | go 块内 | go 块外 |
| ---- | ---- | ---- |
| put | >! 或 >!! | >!! |
超级会员免费看
订阅专栏 解锁全文
1042

被折叠的 条评论
为什么被折叠?



