社区
VB基础类
帖子详情
vb不支持多线程??
lilymiao
2004-07-09 10:33:53
如题,真的么?
...全文
429
5
打赏
收藏
vb不支持多线程??
如题,真的么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flyingZFX
2004-07-09
打赏
举报
回复
非要用线程呀,多不稳定呀,,
还是用DDE好呀,,功能和线程差不多嘛
viena
2004-07-09
打赏
举报
回复
不论用什么,线程同步都是一个头疼的问题,一般只能在主线程显示用户界面,其它线程执行一些后台任务
huangjianyou
2004-07-09
打赏
举报
回复
我什么都没说,我转载过来的。
dullwolf
2004-07-09
打赏
举报
回复
VB无所不能,谁说VB不好,我就气愤。
huangjianyou
2004-07-09
打赏
举报
回复
转载:
多线程与VB
“协作式多任务”、“抢占式多任务”、“多进程”、“多线程”这些词真可以算是如雷贯耳了,不过词是词,了解是了解,两回事。我曾经煞有介事的向一个同学说明什么是“多进程”,什么是“多线程”,不多久就发现我的解释是完全错了的,所以现在我要讲的是 β2 版,有什么错误敬请提出。:)
先说说“协作式多任务”和“抢占式多任务”。在 Windows 3.1 中,多任务方式是“协作式多任务”,意思是说一个任务得到了 CPU 时间,除非它自己放弃使用 CPU ,否则将完全霸占 CPU ,所以任务之间需要协作——使用一段时间的 CPU ,放弃使用,其它的任务也如此,才能保证系统的正常运行;而在 Windows 95 中使用的就是“抢占式多任务”了,它的总控制权在 Windows 手中,Windows 会轮流询问每一个任务是否需要使用 CPU ,需要使用的话就让它用,不过在一定时间后,Windows 会剥夺当前任务的 CPU 使用权,把它排在询问队列的最后,再去询问下一个任务……。这种方式上的不同造成 95 和 3.1 性能上的不同:3.1 中如果有一个任务死锁,则系统也同样死锁;95 中有一个任务死锁,系统仍能正常运行。
再说说“多进程”和“多线程”。同一个程序的多个运行的副本就是“多进程”了;在 Windows 95 中,一个进程只是一段放置程序的内存,只有线程才是真正运行的任务,所以一个进程至少包含一个线程,事实上,系统为每一个进程创建一个缺省线程,叫做主线程,主线程可以创建子线程,子线程仍然可以再创建子线程,这就是“多线程”了。Windows 对待线程是一视同仁的都作为一个任务看待的,并不对主线程有什么优惠,这和 OS/2 稍有不同:Windows 下一个进程中只要有一个线程在运行就不终止,但在 OS/2 下主线程结束时会同时关闭所有的子线程。有一个同事对 OS/2 的这种线程管理方式很赞赏,我却不以为然,我以为让线程自然的结束会比强制结束好的多。
Windows 3.1 是没有“多线程”的概念的,因为没有意义,只有在“抢占式多任务”的方式下,“多线程”才有其用武之地。
“多线程”的“Hello World”是文件复制。在进行一个大文件的复制时,虽然复制窗体上有一个“取消”按钮,但如果不是多线程,就只有到了文件复制完毕时程序才知道用户按了“取消”钮,典型的先斩后奏,非我所欲也。当然也不是完全没有办法解决,在 VB 中是用“DoEvents”,C 中是用“PeekMessage”,不过在“协作式多任务”中这实在是一个危险的办法——此函数不知道什么时候返回,但是硬件不等人,所以也只是没有办法的办法,何况即使在“抢占式多任务”,这样做的效率也是很低的。而用“多线程”,可以用一个线程执行“疯狂拷贝”,一个线程监视按钮状态,在用户按下了“取消”按钮时,程序马上就可以知道,并且马上“取消”了。
“多线程”的说明到此为止,以下我要说一说 VB 的多线程问题。
官方的文件说 VB 不支持多线程,这其实是说 VB 中的语句并不都是线程安全的,但是哪些是线程安全的,他们不说,我们也不知道,只有靠实践,我还没有实践,所以也不知道。但是这并不是说 VB 程序真的是“单线程”的程序,事实上至少每一个 ActiveX 控件都是一个线程,所以如果大家对 ActiveX 控件没有我这样的恶感,大可开发一个 ActiveX 控件实现安全的多线程程序。至于 VB 缺省的控件是否也是用多线程实现的,我还不知道,各位如有兴趣,可以测试一下。
在我做的多线程的例子里曾说过 VB 提供的“CreateThread”函数的说明是错误的,关键在“函数地址”那一项使用了缺省的“ByRef”,而实际应该是“ByVal”的。此函数第一个参数是指定新线程的属性,产生安全描述符用的,可以传一个“NULL”过去,表示不在乎,我在我的例子里就是这样做的;第二个参数指定新线程的栈大小,也可以传一个“0”过去,说明和主线程一样;第三个参数是函数地址,用“AddressOf”得到;第四个是参数指针;第五个是创建标志,缺省值是“NULL”,表示立即执行,可斟酌使用;最后一个是用来返回线程的线程标识符。
新线程函数定义为“Function 线程函数(ByVal 参数 As Long) As Long”。“CreateThread”函数的参数一般情况下用缺省值就可以了,但是如果想传递参数到新线程,C 不用说,指针是它的长项,只是在 VB 中,虽然可以用“VarPtr”函数取得变量地址,但是这个地址对于 VB 程序本身却几乎是无用的,就是“线程函数”中得到的那个“参数”几乎是无用的。我说几乎是无用的,就是说事实上还是有用的。:) 如果有很多参数要传递,使用“CopyMemory”是可以实现的,不过,这绝对是一个危险函数,不到不得已不用也罢;但是如果只需要传递一个小于 32 位的值,我们就可以大张旗鼓的用这个“参数”了——虽然系统说此参数是指针,不过传入传出以及解释权都是由你控制,谁也不能阻止你将一个“Long”按值传递给“线程函数”,甚至如果你希望传递的是一个“Single”,也只需要修改“CreateThread”和“线程函数”的说明即可,不用我多说了吧!当然,最简单的方法有时候最有效——用全局变量,没有限制,只是有些麻烦。:)
对 VB 来说,简单的多线程程序还需要用到“ExitThread”,一般还要用到“SuspendThread”、“ResumeThread”,这几个函数相对简单的多,就不多说了。不过如果是复杂的多线程,就要用到一些线程同步的 API 了,我还没有用到,总不能空穴来风,所以也不说了。
一九九九年十二月三日
基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略研究(Simulink仿真实现)
内容概要:本文围绕“基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略”展开研究,提出一种结合超局部模型(ULM)与扩张状态观测器(ESO)的无模型预测电流控制(MFPCC)改进方法,旨在提升永磁同步电机(PMSM)电流环的动态响应性能与抗干扰能力。该策略利用超局部模型对系统行为进行局部逼近,避免依赖精确数学模型,同时引入自抗扰控制中的ESO实时观测并补偿系统内外部扰动,有效抑制参数摄动、负载变化及模型不确定性带来的影响。研究通过Simulink搭建完整的控制系统仿真模型,对传统MFPCC与所提改进策略进行对比分析,验证了新方法在电流跟踪精度、响应速度和鲁棒性方面的优越性。; 适合人群:具备电机控制、现代控制理论及Simulink仿真基础的电气工程、自动化及相关专业的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高性能电机驱动系统中电流环控制器的设计与优化;②为无模型控制与自抗扰控制的融合应用提供技术参考;③支撑相关课题的仿真验证、论文复现与创新方法研究。; 阅读建议:建议读者结合Simulink仿真模型深入理解控制结构与参数整定过程,重点关注ESO的观测性能与扰动补偿机制,并可通过改变负载条件、参数偏差等工况进行鲁棒性测试,进一步掌握该改进策略的核心优势与适用边界。
编程教育基于Scratch的人体感应灯光系统设计:智能生活仿真编程教学与科创赛事应用方案
内容概要:本文围绕Scratch图形化编程平台,详细阐述了《人体感应灯光系统》这一贴近生活的AI科创作品的设计与教学应用。通过模拟真实智能家居中人体感应灯的工作原理,利用Scratch的侦测、逻辑判断、亮度特效调节等功能,实现了人物靠近自动亮灯、延时熄灭及环境亮度自适应等仿真功能。文章系统拆解了从场景搭建、核心逻辑设计、分层编程实现到调试优化的完整开发流程,并提供了基础版与进阶版可直接导入的源码,
支持
零基础快速上手与高阶创新拓展。同时构建了“基础—进阶—高阶”三层阶梯式教学体系,适配常规课堂、创客社团与赛事培优等多元教学场景,推动中小学AI教育的生活化、实践化与创新化发展。 适合人群:小学高年级至初中阶段学生,信息技术教师,创客教育从业者,以及参与青少年科创赛事的师生。 使用场景及目标:①作为中小学人工智能通识课程的教学案例,帮助学生理解智能感应与控制逻辑;②用于校内创客社团开展项目式学习;③支撑学生参加AI科创类赛事,完成高质量作品创作与答辩准备;④布置为课后综合实践作业,提升动手能力与科技素养。 阅读建议:建议结合提供的Scratch源码进行实践操作,在复现基础上尝试参数调优与功能扩展,如增加音效提示、多区域感应等,深化对编程逻辑与智能系统设计的理解。
delphi 13.1 unidac-12.0.1-d29pro.exe
delphi 13.1 unidac_12.0.1_d29pro.exe
易语言源码网络流量监控器
易语言源码网络流量监控器
带标注的辣椒病叶数据集,
支持
coco json,识别率95.9%,可识别三种病害和健康叶子,9916张图
预览数据集中的图片,标注信息,训练模型代码可点击查看我的博客链接:https://blog.csdn.net/pbymw8iwm/article/details/162031271 数据集使用方法和模型训练相关技术问题可免费咨询,主页获取作者联系方式
VB基础类
7,789
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章