您的位置:首页 > 其它

Win32汇编——多线程

2011-08-18 19:36 218 查看
1.线程间通信方法:(3种)

使用全局变量

通过发送消息

通过事件对象

2.有关函数:

创建线程:CreateThread

线程函数:

_ProcThread proc
uses ebx esi edi,lParam

local 局部变量

...

mov eax,返回码

ret

_ProcThread endp

获得退出码:GetExitCodeThread

终止线程的方法:(4种)

自然退出,即ret (建议使用)

ExitThread,只能终止当前进程

TerminateThread,异步执行,不建议使用

ExitProcess结束进程

挂起线程:SuspendThread

恢复线程:ResumeThread

3.线程对象会一直保存到使用CloseHandle函数关闭线程句柄为止

4.事件:是一种对象,可以认为是Windows内部的标志,它的状态设置和测试工作由Windows来完成

创建事件:CreateEvent

“置位”:SetEvent

“复位”:ResetEvent

等待事件:WaitForSingleObject、WaitForMultipleObject

5.线程间同步

事件(Event)、临界区(Critical Section)、互斥量(Mutex)、信号灯(Semaphore)

5.1使用事件对象同步:只需在CreateEvent 时将bManualReset 指定为FALSE ,然后在需要独占的代码前添加WaitForSingleObject 在代码后添加 SetEvent 即可。

事件对象可用于多个进程的线程同步,只需创建命名的事件对象,然后在其他进程中使用OpenEvent函数打开命名对象使用。

不使用时,调用CloseHandle关闭对象。

5.2使用临界区对象同步:临界区对象是定义在数据段中的一个CRITICAL_SECTION 结构,由Windows维护和测试,结构应当定义为全局变量,以供各线程使用

涉及函数:

InitializeCriticalSection

EnterCriticalSection

LeaveCriticalSection

DeleteCriticalSection

临界区对象无法命名,所以无法垮进程使用,但是相比其他方法高效的多

5.3使用互斥量对象同步:使用CreateMutex 创建互斥量对象,然后在需要独占的代码前添加WaitForSingleObject 在代码后添加 ReleaseMutex 即可。

互斥量对象也是可命名的,在其他进程中使用OpenMutex 打开。

不使用时,调用CloseHandle关闭对象。

5.4使用信号灯对象同步:是一个允许指定数量的线程获取的对象,一般用于线程排队

使用CreateSemaphore 创建互斥量对象,然后在需要独占的代码前添加WaitForSingleObject 在代码后添加 ReleaseSemaphore 即可。

信号灯对象也是可命名的,在其他进程中使用OpenSemaphore 打开。

不使用时,调用CloseHandle关闭对象。

PS:我去啊,今晚下冰雹了,窗外的雨像是要扑进来吃了我似的,门也左摇右晃,还断网几次,这次笔记实在不易啊!!——2011.08.18 19:36
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: