alibaba / coobjc

coobjc provides coroutine support for Objective-C and Swift. We added await method、generator and actor model like C#、Javascript and Kotlin. For convenience, we added coroutine categories for some Foundation and UIKit API in cokit framework like NSFileManager, JSON, NSData, UIImage etc. We also add tuple support in coobjc.
https://github.com/alibaba/coobjc
Apache License 2.0
4.03k stars 525 forks source link

关于chan_alt中value的疑问 #88

Closed JQShowtime closed 5 years ago

JQShowtime commented 5 years ago

阅读源码时有一个小疑问,希望大神能解答!

在send_nonblock:方法实现中有: int8_t v = 1; channbsend_custom_exec(_chan, &v, custom_exec);

在receiveWithOnCancel:方法实现中有: uint8_t val = 0; int ret = chanrecv_custom_exec(_chan, &val, cancel_exec);

而在altexec()方法中有调用 altcopy(a, other) copy的即是chan_alt中value。

想问一下这个value代表的是什么意义? 另外问一下chan_alt翻译成中文是什么?我只能想到是实体一类的意思,但是感觉不准确

NianJi commented 5 years ago

chan_alt 可以理解为任务,是一次send或者receive的任务的数据结构。

value就是要传递的值。 altcopy可以理解为将send任务中的值拷贝到receive任务中,这样就完成了发送接收的过程。 只不过 COChan 的oc实现里面没有用到值,所以随便传了一个 int8。