pb多线程开发.docVIP

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

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

文档评论(0)

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

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

1亿VIP精品文档

相关文档