Executor
不过到目前为止,我们求值Future还是只有block_on
函数,只能在单个线程上搞并发(通过join
这些组合子),虽然在不少平台上这已经足够了(比如wasm目前多线程还没搞好,只有单线程),但在很多平台上却无法利用多线程的优势。
于是我们希望可以实现一个朴素的策略,利用多线程来poll Future:
- 把
Future
丢到队列里, - 线程池里的空闲的线程则在队列中取
Future
轮询一次,然后晾一边, - 等待
Future
的waker被调用,丢到队列里。
(图懒得画,大家自己脑补)