消费者感觉有问题,生产者生产的0,消费者没有消费到。
来源:11-8 案例:仿 Lua 协程实现非对称协程 API

昨日重现1596341
2020-05-22
课程demo例子日志结果如下:send 0 和receive 0没有成对出现,缺少receive 0换句话说消费者没有消费0。从代码上可以看出,第一次调用消费者consumer.resume(0),消费者协程还没有开启此时调用previousStatus.continuation.resume(Unit)开启协程然后调用yield,此时协程回到了main方法中,继续调用生产者生产出1,伺此后消费者才会调用 (previousStatus as Status.Yielded
).continuation.resume(value)回到消费者协程消费但此时消费的是1.可能我理解的不对,麻烦讲师解答下。
pool-1-thread-1 :send 0
pool-2-thread-1 :start 0
pool-1-thread-1 :send 1
pool-2-thread-1 :receive 1
pool-1-thread-1 :send 2
pool-2-thread-1 :receive 2
pool-1-thread-1 :send 3
pool-2-thread-1 :receive 3
pool-2-thread-1 :receive 200
写回答
3回答
-
第一次调用的时候是作为函数参数的呀,不然start 0是哪儿来的呢?
012020-05-23 -
qq_随心_HJKZ07
2020-05-28
您好,我已购买课程,请问有q 群或者代码资源赠送吗
012020-05-28 -
bennyhuo
2020-05-22
你的理解应该是对的。
00
相似问题