C/C++使用Lu脚本协程(二)

2014-11-24 07:44:29 · 作者: · 浏览: 1
Receive2,处理数据 if((int)ExMsgWithLu(4,hReceive2, &Msg1, &Msg2)==5) //如果协程hReceive2结束 { ExMsgWithLu(9,hReceive2, &Msg1, &Msg2); //终止协程hReceive2 } //如果协程hReceive1和hReceive2都终止 if((int)ExMsgWithLu(4,hReceive1, &Msg1, &Msg2)==8 && (int)ExMsgWithLu(4,hReceive2, &Msg1, &Msg2)==8) { ExMsgWithLu(9,hSend, &Msg1, &Msg2); //终止协程hSend break; } } } FreeLu(); //释放Lu }


运行结果:

*** send : 1 7
+++ receive1 : 8
--- receive2 : -6
*** send : 4 0
+++ receive1 : 12
--- receive2 : -2
*** send : 9 4
+++ receive1 : 25
--- receive2 : 3
*** send : 8 8
--- receive2 : 3
*** send : 2 4
--- receive2 : 1
*** send : 5 5
--- receive2 : 1
*** send : 1 7
--- receive2 : -5
*** send : 1 1
--- receive2 : -5
*** send : 5 2
--- receive2 : -2
*** send : 7 6
--- receive2 : -1
*** send : 1 4
--- receive2 : -4
*** send : 2 3
--- receive2 : -5
*** send : 2 2
--- receive2 : -5
*** send : 1 6

4 函数说明

本例用到了Lu的7个输出函数:初始化Lu的函数InitLu,释放Lu的函数FreeLu,编译表达式的函数LuCom、计算表达式的函数LuCal、注册C/C++函数的函数SetFunction、插入键值函数InsertKey、与Lu交换信息函数ExMsgWithLu。从这里查看这些函数的说明:Lu编程指南。

5 难点分析

代码1和代码2较简单,这里仅对代码3做一下说明。

代码3中用C/C++定义了一个函数lu_rand,注册到Lu系统由脚本调用(函数名为rand),用以产生随机数。另外,定义的3个脚本函数功能如下:

send(x,y)= while{true, rand(&x,&y), o{"\r\n*** send : ", x, " ", y}, yield(0)} //不断产生并输出随机数,然后挂起协程,随机数由参数x和y返回

receive1(x,y:a)= a=0, while{(a=a+(x+y), a< 30 ), o{"\r\n+++ receive1 : ", a}, yield(0)} //当执行a=a+(x+y), a< 30 时,输出a,然后挂起协程

receive2(x,y:a)= a=0, while{(a=a+(x-y), a>(-10)), o{"\r\n--- receive2 : ", a}, yield(0)} //当执行a=a+(x-y), a<(-10)时,输出a,然后挂起协程

6 其他

你可能注意到了,我的联系方式就在下面,如有不明之处或有什么建议,可随时与我进行联系。


版权所有 Lu程序设计 2002-2013,保留所有权利
E-mail: forcal@sina.com QQ:630715621
最近更新: 2014年01月07日