由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 异步通讯代码的简化
相关主题
好玩的梦了:米饭均衡 。。。 (转载)如何快速学Java
相关话题的讨论汇总
话题: yield话题: read话题: 异步话题: webservice话题: 代码
进入Programming版参与讨论
1 (共1页)
s*******d
发帖数: 59
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++实现,大家有什么好主意吗?
k*k
发帖数: 508
2
妙啊~ 怎么从来没想到这么用呢,正在写一个相关的东西,正好用上
哈哈

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

1 (共1页)
进入Programming版参与讨论
相关主题
好玩的梦了:米饭均衡 。。。 (转载)如何快速学Java
相关话题的讨论汇总
话题: yield话题: read话题: 异步话题: webservice话题: 代码