
多线程技术
gencheng
这个作者很懒,什么都没留下…
展开
-
线程同步--临界区技术
临界区包括就是下面4条API语句: InitializeCriticalSection(CS); //初始化临界区 EnterCriticalSection(CS); //进入临界区 LeaveCriticalSection(CS); //退出临界区 DeleteCriticalSection(CS); //销毁临界区示例:uses Windows;var CS:TRTLCriticalSection;类中使用,可简化为下面结构:private FLock:TRTLCriticalS原创 2011-02-18 16:13:00 · 717 阅读 · 0 评论 -
操作系统核心对象与GDI对象
①核心对象(Kernel object):表现为HANDLE,它由KERNEL32.DLL管理。 .核心对象可以有一个以上的拥有者,甚至可以是跨进程的拥有者。 .每一个核心对象内部都有一个引用记数(refenrence count),当引用记数为0时,操作系统将销毁该核心对象(cleans up操作);CloseHandle()的唯一作用就是将引用记数减1.它只存于下列7种对象原创 2013-07-20 16:33:27 · 1190 阅读 · 0 评论 -
线程间如何进行消息传递
线程间如何进行消息传递1) 定义消息ID#define WM_USER_MSG WM_USER+1022) 创建线程m_hThread = CreateThread(NULL, 0, Thread, 0, 0, &m_dwID);3) 线程函数中使用GetMessageDWORD WINAPI Thread(LPVOID lpParameter){while转载 2013-07-19 10:07:23 · 2385 阅读 · 0 评论 -
PostMessage与PostThreadMessage的区别
原文:http://topic.youkuaiyun.com/u/20100107/11/161c95f0-eec2-45fc-a433-f50ec725f09e.htmlPostMessage与PostThreadMessage的区别 帖子标题应改为PostMessage与PostThreadMessage的区别。消息队列是属于线程的,Post消息就是把消息放到目标线程的消息队列中。这两者的区转载 2013-07-19 10:05:27 · 13203 阅读 · 0 评论 -
PeekMessage和GetMessage函数的主要区别
PeekMessage和GetMessage函数的主要区别有:1. GetMessage的主要功能是从消息队列中“取出”消息,消息被取出以后,就从消息队列中将其删除;而PeekMessage的主要功能是“窥视”消息,如果有消息,就返回true,否则返回false。也可以使用PeekMessage从消息队列中取出消息,这要用到它的一个参数(UINT wRemoveMsg),如果设置为PM_REM转载 2013-07-19 10:03:43 · 25841 阅读 · 3 评论 -
在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!
在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程! 如果直接使用Win32的API函数CreateThread()创建多个线程,也是可以创建的。但是,你应该明白,在每个线程中动态分配和销毁内存块,是需要同步保护的。Delphi语言中有一个在使用多线程环境下至关重要的全局变量IsMultiThread,系统在进行内存分配的时候,根据IsMu原创 2012-11-05 09:37:51 · 12315 阅读 · 4 评论 -
Delphi中使用Win32 API创建内建消息循环的线程函数
Delphi中使用Win32 API创建内建消息循环的线程函数 1.线程创建 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes DWORD dwStackSize, // initial thre原创 2012-11-02 15:32:22 · 3715 阅读 · 0 评论 -
Delphi中的线程类Thread
原文:http://www.heibai.net/article/info/info.php?infoid=22594 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,我写此文的目的在于对转载 2012-11-02 11:12:42 · 2067 阅读 · 0 评论 -
Delphi中使用TMultiReadExclusiveWriteSynchronizer类进行数据同步
原文:http://www.cnblogs.com/94YY/archive/2011/10/05/2199346.htmlDelphi中使用TMultiReadExclusiveWriteSynchronizer类进行数据同步(调试环境:Delphi2007+WinXPsp3 例程:Tst_Thread5.dpr)前面的例子都是同类线程的不同实例来读写全局变量转载 2012-11-01 16:45:28 · 4354 阅读 · 0 评论 -
个人多线程程序设计经验总结
1.各线程的数据要分离开来,避免使用全局变量。2.如果各线程一定要使用全局变量,哪么该全局变量一定要读写保护(临界区,互斥等技术)。3.不要在线程之间共享GDI对象。4.确定你知道你的线程状态,不要径自结束程序而不等待它们的结束;5.让主线程处理用户界面(UI)。6.千万不要在一个临界区中调用Sleep()或Wait..()API函数;不要长时间锁住一份资源。7.线程之间(原创 2013-07-19 10:13:01 · 8391 阅读 · 4 评论