pb多线程开.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
pb多线程开

PB目前版本暂时还不支持多线程开发,多线程是指一个程序内部同时执行的多个流程﹐与单线程相比﹐它至少有两个方面的优点﹕第一﹐它可以更好地利用系统资源﹐比如CPU﹐若一个线程因I/O操作受阻﹐另一个线程仍可利用CPU来执行﹔第二﹐它更好地满足了客户的需求﹐因为挑剔的客户希望你开发的程序在显示动画的同时还能播放音乐﹑显示文件﹑下载网络文件等﹐这是单线程应用程序无法完成的。目前﹐支持多线程的开发工具主要有﹕Java﹑VC﹑Delphi和C++Builder。 ? ? ? ? ?   多线程强调的是一个进程内部有多个流程在同时执行﹐同时执行的概念相当于PB分布式计算中的异步处理。也就是说﹐只要我们在一个程序内部实现了异步处理﹐就相当于实现了多线程。分析至此﹐下一步该怎幺做就不言而喻了﹕在一个应用程序内部实现分布式计算﹐使用服务器推送技朮﹐异步执行共享对象中的函数。 ? ? ? ? ?   下面就编写一个Demo﹐介绍在PB中如何利用分布式计算技朮来开发多线程应用程序﹐uo─thread1和uo─thread2是类用户对象uo─thread的两个实例﹐uo─thread的功能是给实例变量li─Count自加5秒﹐自加的同时向中间对象uo─argv1和uo─argv2发送ue─thread消息。两个中间对象的功能是把ue─thread消息转化为ue─thread1和ue─thread2后发给主窗口w─main。 ? ? ?   主窗口接收到ue─thread1消息后﹐显示uo─thread1中自加变量的值﹐接收到ue─thread2后﹐显示uo─thread2中自加变量的值。在单线程中﹐uo─thread1先执行﹐5秒钟后uo─thread2开始执行﹐因此﹐前5秒内主窗口只能收到ue─thread1消息﹐后5秒内只能收到ue─thread2消息。在多线程中﹐uo─thread1和uo─thread2同时执行﹐因此w─main可以不断地收到ue─thread1和ue─thread2消息。 ? ? ? ? ?   1﹒设计用户对象uo─thread ? ? ? ? ?   新建一个类用户对象﹐命名为uo─thread﹐添加如下两个实例变量﹕ ? ? ? ? ?   NonVisualObject ? inv─arg ? ? ? ? ?   Long ? li─Count ? //自加变量 ? ? ? ? ?   创建如下三个用户函数﹕ ? ? ? ? ?   □uf─start()﹐功能是﹕完成自加5秒并向中间对象发送ue─thread消息。脚本为﹕ ? ? ? ? ?   Time ? t0 ? ? ? ? ?   t0= ? Now() ? //获取当前时间 ? ? ? ? ?   Do ? While ? SecondsAfter(t0,Now())〈=5 ? ? ? ? ?   li─Count++//实例变量自加5秒 ? ? ? ? ?   inv─arg.TriggerEvent(′ue─thread′) ? ? ? ? ?   //向中间对象发送ue─thread消息 ? ? ? ? ?   Loop ? ? ? ? ?   □uf─getcount()﹐功能是﹕获取自加变量的瞬间值。其脚本为﹕ ? ? ? ? ?   Return ? li─Count ? //返回实例变量 ? ? ? ? ?   □uf─setparent(NonVisualObject ? nv─arg)﹐调用时﹐使用中间对象为参数。脚本为﹕ ? ? ? ? ?   inv─arg=nv─arg ? ? ? ? ?   //用中间对象给实例变量赋值 ? ? ? ? ?   2﹒设计中间对象uo─argv1和uo─argv2 ? ? ? ? ?   新建一个类用户对象﹐命名为uo─argv1﹐添加如下实例变量﹕ ? ? ? ? ?   Window ? win─arg ? ? ? ? ?   创建用户函数uf─setparent(Window ? w─argv)﹐调用时﹐用主窗口作为参数。其脚本为﹕ ? ? ? ? ?   win─arg=w─argv ? ? ? ? ?   //用主窗口对象给实例变量赋值 ? ? ? ? ?   声明用户事件ue─thread﹐用于对uo─thread1发出的uo─thread消息进行响应﹐其脚本为﹕ ? ? ? ? ?   win─arg.TriggerEvent(〞ue─thread1〞) ? ? ? ? ?   //向主窗口发送ue─thread1消息 ? ? ? ? ?   uo─argv2和u

文档评论(0)

wst34008 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档