随笔分类 - Delphi-Thread
摘要:NOTE0 在以下两种基本情况下,线程之间需要相互通信: 需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性; 一个线程需要通知其它线程某项任务已经完成 1.原子访问:Interlocked系列函数 http://hi.baidu.com/microsoftxiao/blog/item/a
阅读全文
摘要:[delphi] view plain copy [delphi] view plain copy 在 Windows 上建立一个线程, 离不开 CreateThread 函数; TThread.Create 就是先调用了 BeginThread (Delphi 自定义的), BeginThread
阅读全文
摘要:以前在写个别程序的时候老是喜欢使用纯API编程。 在C++中无大问题,可是到了DELPHI中情况就不一样了。 当你用 DELPHI写的多线程程序莫名其妙的内存错误,特别是字符串(string)操作; 或者程序无故终止,又没有任何提示,你需要认真分析可能是你直接使用了CreateThread。 C++
阅读全文
摘要:本文的内容取自网络,并重新加以整理,在此留存仅仅是方便自己学习和查阅。所有代码均亲自测试 delphi7下测试有效。图片均为自己制作。多线程应该是编程工作者的基础技能, 但这个基础我从来没学过,所以仅仅是看上去会一些,明白了2+2的时候,其实我还不知道1+1。开始本应该是一篇洋洋洒洒的文字, 不过我
阅读全文
摘要:Thread.h [cpp] view plain copy #ifndef __THREAD_H__ #define __THREAD_H__ #include <string> #include <windows.h> #include <process.h> class Runnable {
阅读全文
摘要:有几个网友私下问我一些有关线程的事情。过节写个东西上来大家交流。 思维误区1,自己新建的THREAD是线程,自己的主程序不是线程. 很多人在多线程编程没有把主线程也当作线程。其实主线程也是线程。看起来是废话,这个话确实很重要,这个就意味着,在DELPHI中,不光你开的线程,还有你的主线程所有的内存分
阅读全文
摘要:Delphi中的线程类 - TThread详解 2011年06月27日 星期一 20:28 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchroniz
阅读全文
摘要:线程的释放方式有两种:一种是线程在运行完成后自动释放,一种是手动释放。 无论是那种释放,都应该在线程停止后进行释放。 然而线程的停止也有两种情况:一种是不需要设置标志位,直接完成;一种是由于execute方法中做了循环,需要设置标志位才能停止。 如果线程已经停止并且自动释放,再去手动停止,就会报错。
阅读全文
摘要://判断线程是否释放//返回值:0-已释放;1-正在运行;2-已终止但未释放;//3-未建立或不存在 function CheckThreadFreed(aThread: TThread): Byte;var i: DWord; IsQuit: Boolean;begin if Assigned(a
阅读全文
摘要:很多朋友一直都在问CreateThread如何传递多个参数,CreateThread传递参数的方式是指针传递的,所以这里也可以利用指针来做!Demo 关键代码如下: type TfrmTestThread = class(TForm) Button1: TButton; procedure Butt
阅读全文
摘要:type TForm1 = class(TForm) Button1: TButton; Button3: TButton; ListBox1: TListBox; Button2: TButton; Button4: TButton; procedure Button1Click(Sender:
阅读全文
摘要:http://www.cnblogs.com/lackey/p/6297115.html 几个例子: http://www.cnblogs.com/lackey/p/5371544.html
阅读全文
摘要:TThread是一个抽象类,可以创建几个独立的线程。类关系 TObject在一个多线程的应用程序中创建一个TThread的后子类代表一个线程。每一新子类的TThread对象的实例是一个新的线程。从TThread派生的多线程实例可以构成Delphi的多线程应用程序。 当一个应用程序运行时,应用程序就被
阅读全文
摘要:interface uses Classes, SysUtils; type TParallelProc = reference to procedure(i: Integer; ThreadID: Integer); TParallel = class(TThread) private FProc: TParallelProc; FThreadID: I...
阅读全文
摘要:在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程! 如果直接使用Win32的API函数CreateThread()创建多个线程,也是可以创建的。但是,你应该明白,在每个线程中动态分配和销毁内存块,是需要同步保护的。Delphi语言中有一个在使用多
阅读全文
摘要:前话: 其实大家要学会看源码, 我接下来要说的这些东东,与其等别人讲,还不如自己搞几个代码试一下,印象还深刻点TThread.Queue和TThread.Synchronize的区别, 效果上:二者的作用都是让业务代码在主线程中执行,差别: Synchronize是阻塞,Queue是非阻塞 代码上
阅读全文
摘要:Delphi 封装了一个很强大的线程类 TThread, 我们也自己动手制作一个简单的线程类 首先Type一个类 [delphi] view plain copy type TwwThread = class constructor Create; overload; destructor Dest
阅读全文
摘要:在system.classes单元中,CheckSynchronize在ThreadLock上持续调用TMonitor的Exit和Enter以保护SyncList。 因为代码做的第一件事是换出SyncList,并且由于对SyncList的所有其他访问也受到ThreadLock上的TMonitor的保
阅读全文
摘要:[cpp] view plain copy ... m_hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL); ... while (TRUE) { // 等待 ::WaitForSingleObject(pThis->m_hEvent, INFINITE
阅读全文