首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

关于PB多线程开发的有关问题

2012-04-11 
关于PB多线程开发的问题?在主线程中,如果一个函数正在执行的同时去执行另一个函数没有什么问题,但如果是用

关于PB多线程开发的问题?
在主线程中,如果一个函数正在执行的同时去执行另一个函数没有什么问题,但如果是用SharedObjectRegister创建的一个子线程,在子线程正在执行函数的时候就只能用POST关键字去执行下一个函数,假如不用POST去执行的话子线程就会死锁,请问这是PB本身的原因吗?

例子:
--------
在cb_1中代码如下:

uo_1.SomeMethod()

在cb_2中代码如下:

uo_1.SomeMethodElse() //如果uo_1在主线程中,uo_1.SomeMethod()还没有执行完可以加Post也可以不加
uo_1.Post SomeMethodElse()//如果uo_1是在子线程中,uo_1.SomeMethod()还没有执行完就只能这样写,否则程序会死掉

[解决办法]
一个新的PB线程通过使用SharedObjectRegister()函数来产生。 但是要让线程异步执行,必须使用PowerScipt的POST语句(如inv_shared.POST of_primeNumbers(1,1000))。如果执行一个共享对象的方法(函数或事件),而没有使用POST关键字,该方法将在一个新的线程中执行,需要等它执行完成之后才会执行调用该方法的脚本的下一个语句。 当使用POST方法时时,PB将会把对该方法的调用加入到对象的事件队列之中,然后马上就返回。在大多数情况下,当前脚本执行完成之后就会执行对方法的调用。由于方法的返回值在调用方法的脚本是不可用的,因此这类方法一般来说都没有返回值,然而,如果它有返回值的话,将会被忽略,而不会发生错误。

热点排行