DELPHI 多线程(TThread类的实现)

之前学习了用API实现,让我们再学习下用DELPHI的TThread类。

先新建一个普通的工程,再新建一个线程类File>>New>>Othre>>Delphi File>Thread Object,取个名字,DELPHI会自动生成一个单元,我们只需往里简单添加功能代码,和在要使用的单元里实例引用即可。

为了节省篇幅,现把TMyThread类集成主窗体单元里,在窗体单元里声明类也是可以的。

例:用工作线程在窗体输出0~500000的数字。全文:http://www.cnblogs.com/chaosc/p/5819178.html //文中提供了几个关于线程同步实例

  我的个人理解:从上文中的实例看出,多线程就是执行一段相同的代码块(如:procedure TMyThread.Run)。如果我要用多线程的方式执行不同功能的代码,就要建立多个线程类

 

总结:

多线程用TThread类以及Uses syncobjs后使用的 TCriticalSection (临界区),TMutex(互斥体),TSemaphore (信号对象,D2009才开始有),TEvent (事件对象)很多都是引用了API的方法进行了一定的简化,不过也有部分功能的缺失,如Event (事件对象)缺少了启动步进一次后暂停的功能,不过基本在同步上已经够用了,另外在TThread类声明的Execute过程里,加上FreeOnTerminate := True;这句会让线程执行完后自动释放,还可以把功能代码的方法套在Synchronize()里,用于同步一些非线程安全的控件对象,避免多个线程同时对一个对象操作引发的问题。

delphi中线程应用之Synchronize()

posted @ 2016-12-13 23:01  stma  阅读(1330)  评论(0)    收藏  举报