社区
PowerBuilder
帖子详情
pb有没有多线程功能?
杭州丹尼
2003-01-11 11:43:37
pb若没有多线程功能,是不是很没前途?
...全文
93
12
打赏
收藏
pb有没有多线程功能?
pb若没有多线程功能,是不是很没前途?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
taoguang2
2003-01-12
打赏
举报
回复
toutou
2003-01-12
打赏
举报
回复
^_^,上面的文章我也贴过类似的不过是自己翻译过来的。按上面说得做没错
zhouweiwansui
2003-01-12
打赏
举报
回复
没有真正意义上的多线程
erigido
2003-01-11
打赏
举报
回复
我也不清楚,帮你up 一下
dongquestion
2003-01-11
打赏
举报
回复
有
编程夜猫
2003-01-11
打赏
举报
回复
没有,不一定。说不定以后会有。
CQP
2003-01-11
打赏
举报
回复
刚看到一篇文章,关于多线程的,参考一下
关于PB编程多线程问题(转载)
多线程是指一个程序内部同时执行的多个流程,与单线程相比,它至少有两个方面的优点:第一,它可以更好地利用系统资源,比如CPU,若一个线程因I/O操作受阻,另一个线程仍可利用CPU来执行;第二,它更好地满足了客户的需求,因为挑剔的客户希望你开发的程序在显示动画的同时还能播放音乐、显示文件、下载网络文件等,这是单线程应用程序无法完成的。目前,支持多线程的开发工具主要有:Java、VC、Delphi和C++Builder。
多线程强调的是一个进程内部有多个流程在同时执行,同时执行的概念相当于PB分布式计算中的异步处理。也就是说,只要我们在一个程序内部实现了异步处理,就相当于实现了多线程。分析至此,下一步该怎么做就不言而喻了:在一个应用程序内部实现分布式计算,使用服务器推送技术,异步执行共享对象中的函数。
下面就编写一个Demo,介绍在PB中如何利用分布式计算技术来开发多线程应用程序,其程序结构如图1所示。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。
图1 程序结构
主窗口接收到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和uo—argv1完全一样,只需将uo—argv1中的ue—thread1改为uo—thread2即可。
3.设计主窗口w—main
主窗口外观如图2所示,凹下的三个控件分别为:st—thread1、st—thread2、st—time,分别用于显示uo—thread1和uo—thread2中自加变量的当前瞬间值和系统时间。声明两个用户事件:ue—thread1和ue—thread2,分别用于对中间对象发送来的ue—thread1和ue—thread2消息进行响应。ue—thread1事件处理代码为:
图2 主窗口
st—thread1.Text=String(uo—thread1.uf—getcount())
ue—thread2事件的处理代码为:
st—thread2.Text=String(uo—thread2.uf—getcount())
w—main的Open事件代码为:
uo—arg1 = Create uo—argv1
//初始化中间对象的一个实例
uo—arg2 = Create uo—argv2
uo—arg1.uf—setParent(This) //给中间对象的实例变量赋值
uo—arg2.uf—setParent(This)
Timer(1) //启动定时器
Timer事件处理代码为:
st—time.Text=String(Now())//显示当前时间
在“单线程”的Clicked事件中加入下列代码:
SharedObjectUnRegister(″object1″)
//注销先前注册过的共享对象object1
SharedObjectUnRegister(″object2″)
//注销先前注册过的共享对象object2
If IsValid(uo—thread1) Then Destroy uo—thread1 //若uo—thread1已经存在,先删除
If IsValid(uo—thread2) Then Destroy uo—thread2
uo—thread1=Create uo—thread
//初始化uo—thread1
uo—thread2=Create uo—thread
uo—thread1.uf—setparent(uo—argv1) //用中间对象给uo—thread1中的实例变量赋值
uo—thread2.uf—setparent(uo—argv2)
uo—thread1.Post uf—start() //执行uo—thread1中的uf—start()函数,完成后才执行下一句
uo—thread2.Post uf—start()
//上一条语句执行完成后才会执行
在“多线程”的Clicked事件中加入下列代码:
SharedObjectRegister(″uo—thread″,″object1″)
//将uo—thread对象注册为object1
SharedObjectRegister(″uo—thread″,″object2″)
//将uo—thread对象注册为object2
SharedObjectGet(″object1″,uo—thread1)
//用uo—thread1引用共享对象object1
SharedObjectGet(″object2″,uo—thread2)
//用uo_thread2引用共享对象object2
uo—thread1.uf—setparent(uo—argv1) //用中间对象给uo—thread1中的实例变量赋值
uo—thread2.uf—setparent(uo—argv2)
uo—thread1.Post uf—start() //利用服务器推送技术,异步调用共享对象中的uf—start()
uo—thread2.Post uf—start()//相当于启动线程
本人整理得来的东西
----------------------------------------------
sdavid
th820901
2003-01-11
打赏
举报
回复
哈哈
online
2003-01-11
打赏
举报
回复
可以用sharedata
CQP
2003-01-11
打赏
举报
回复
有啊
可以利用API实现啊
tiggerliu
2003-01-11
打赏
举报
回复
真是孤卤寡闻,去PB_Sys_con网站上去看看吧
tchatcha
2003-01-11
打赏
举报
回复
有,好多网站的介绍,流方的主页,皇家PB,
PB
多线程
实现
PB
.NET是
PB
向.NET框架的转型产品,它完全融入了.NET的生态系统,因此可以直接使用.NET Framework提供的
多线程
功能
。在
PB
.NET中,可以使用System.Threading命名空间中的Thread类来创建和管理线程。此外,还可以使用...
PB
多线程
例子,
PB
源码
标题中的“
PB
多线程
例子,
PB
源码”指的是PowerBuilder(
PB
)应用程序中的
多线程
编程示例,而源码则是实现这一
功能
的具体代码。PowerBuilder是一款强大的、基于对象的编程工具,主要用于构建数据库应用系统。在
多线程
...
PB
多线程
串口通讯DEMO,源代码
描述中的“
PB
多线程
串口短信猫通讯程序,纯
PB
代码”进一步说明了这个程序的核心
功能
。短信猫是一种能够通过GSM网络发送和接收短信的硬件设备,通常通过串口连接到计算机。这里的“纯
PB
代码”意味着整个程序都是用...
powerbuilder
多线程
组件及实例
基于
pb
的SharedObject技术实现的
多线程
,并且以组件形式进行了封装,可以很方便的应用于自己项目中,并扩展了一些
功能
: 1、实现主线程与子线程之间的参数传递 2、实现子线程对主线程的信息传递 3、支持子线程的并发...
PB
Ext--
PB
NI
多线程
源码+
PB
12.5Demo
PowerBuilder
多线程
辅助; 开发工具: VC++ 2008 Express 开发平台: Win8 64bit 作者: 向辉 ps: 抛砖引玉, 只为分享技术, 大家一同交流; 13:13 2013/4/9 实现 StartEx
功能
PowerBuilder
1,108
社区成员
66,453
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章