<b>C++ Builder多线程编程中一些领会</b>[VC/C++编程]
本文“<b>C++ Builder多线程编程中一些领会</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
近来在写一个程序用到了多线程,所以对CB下的多线程有一定的学习.
目前把自己的一些心得讲一下.水平有限,写的很大概,请大家包涵.
CB相关于VC来说,在CB下写多线程程序是很简单的.不但是VCL中有TThread这个类.封装了那些关于多线程的WINDOW API.我认为更便利的是他供应了
直接拜候主VCL线程中对象的本领.可以很简单的和主线程中的窗体,控件
打交道.和单线程的方法没有太多辨别.只是在有多个线程都要拜候主线程
中的对象(比方拜候同一个窗体上的StringGrid).只要用Thread的Synchronize办法来调用那段拜候主VCL线程的代码(具体请看帮忙),我们就不用耽忧拜候冲突的问题了.并且关于多线程的同步和互斥,CB也对WINDOW 编程中那些机制举行了封装.比方对临界区CriticalSection封装为TCriticalSection.事件Event封装为TEvent.这些类相当简单好用.
下面就是我认为对比重要的几点,供大家参考.
1.TThread的WaitFor办法.是等候一个线程返回.其返回值在这个线程里可以肆意设定.以便在该线程返回的时刻让调用他的线程知道他的运行情形.
在TThread的 OnTerminate事件中做线程的排除工作.他不是线程运行的一部份.
而是主VCL线程的一部份.所以在此中不能拜候Thread的部分变量(如 int __thread i)
你可以把清楚代码写在这里,不用管目前在EXCUTE()办法履行到了哪个地方.
这么看起来有点近似于C++里的 finally 块的作用.
2.TEvent很重要.实现线程的同步.WaitFor(int Timeout)功效近似于
WINDOW API WaitforSingleObject().返回值包含:
此中参数Timeout可以设为INFINITE表示永久等候,但这样,程序很简单死在这里.
wrSignaled 该事件发生(成功返回).
wrTimeout 等候超时.
wrAbandoned 在该事件的超时期限到达前,该事件对象已经被毁灭了..
wrError 在等候历程中有非常产生,要知道具体产生的错误要查看 TEvent的LastError
属性.
以上是“<b>C++ Builder多线程编程中一些领会</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |