avatar
异步通讯代码的简化# Programming - 葵花宝典
s*d
1
有的异步socket的实现框架是通过诸如beginXXX,endXXX等一些回调函数,
可想而知,这样的代码恐怕支离破碎,即难编又难看。
去年看到C#的新语句,yield,通过状态机和将local变量包装到自动生成的类里,
可以方便实现代码的两次调用间的接续执行。
感觉也可以通过这种机制将原来异步的代码转化成同步的写法。
比如
function webservice(socket s) {
YIELD_BLOCK_BEGIN
...
YIELD_READ(s)
...
YIELD_WRITE(s)
...
YIELD_BLOCK_END
}
另外有线程来调用上面的webservice,到YIELD_READ时,其实是执行异步read就返回,
等read ready的时候线程继续调用webservice,执行就从YIELD_READ后开始。
具体到C++实现,大家有什么好主意吗?
avatar
k*k
2
妙啊~ 怎么从来没想到这么用呢,正在写一个相关的东西,正好用上
哈哈

【在 s*******d 的大作中提到】
: 有的异步socket的实现框架是通过诸如beginXXX,endXXX等一些回调函数,
: 可想而知,这样的代码恐怕支离破碎,即难编又难看。
: 去年看到C#的新语句,yield,通过状态机和将local变量包装到自动生成的类里,
: 可以方便实现代码的两次调用间的接续执行。
: 感觉也可以通过这种机制将原来异步的代码转化成同步的写法。
: 比如
: function webservice(socket s) {
: YIELD_BLOCK_BEGIN
: ...
: YIELD_READ(s)

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。