我读过这篇关于核心异步的好文章:
http://www.core-async.info/reference/primitives
我理解:
1. put! 是异步的并可以接受回调。在简单场景下运作良好,但可能会陷入回调地狱。 2. go 可以解决回调地狱问题,并允许使用同步方式编写异步代码。 3. go 利用轻量级线程池和停车来实现并发。 4. go 使用有限状态机。
我不明白:
1. put! 如何实现异步?它是否也使用线程池? 2. put! 是否也使用停车? 3. 有限状态机在go块中的作用是什么?它是否实现了停车? 4. 我应该始终尝试使用put!而不是go因为它更便宜吗?这是否意味着put!可以实现与go完全一样的并发性能,只有在需要处理复杂的异步代码时才使用go?
感谢您为我们解开这些谜团。
1. put! 是异步的并可以接受回调。在简单场景下运作良好,但可能会陷入回调地狱。 2. go 可以解决回调地狱问题,并允许使用同步方式编写异步代码。 3. go 利用轻量级线程池和停车来实现并发。 4. go 使用有限状态机。
我不明白:
1. put! 如何实现异步?它是否也使用线程池? 2. put! 是否也使用停车? 3. 有限状态机在go块中的作用是什么?它是否实现了停车? 4. 我应该始终尝试使用put!而不是go因为它更便宜吗?这是否意味着put!可以实现与go完全一样的并发性能,只有在需要处理复杂的异步代码时才使用go?
感谢您为我们解开这些谜团。