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
使用全局变量
通过发送消息
通过事件对象
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
相关文章推荐
- WIN32汇编: 15.多线程教程
- 使用MASM05 - Win32汇编语言013
- Win32汇编之HelloWorld
- win32汇编提醒
- Win32 Linux汇编语法区别
- WIN32汇编下的窗口程序
- 使用MASM09 - Win32汇编语言017
- 内存管理1 - Win32汇编语言054
- 安全探讨之用Win32汇编写双进程守护
- 图解命令行手动编译构建一个win32汇编程序
- Win32汇编教程十三 INI 文件的操作 选择自 ghj1976 的 Blog
- 第一个Win32汇编程序
- win32汇编环境搭建以及第一个程序
- Win32汇编教程十一 进程控制
- 关于win32汇编学习心得和计划
- win32 OpenGL的 context 多线程问题
- Win32汇编教程十三 INI 文件的操作
- Win32汇编注入:APIHook
- win32汇编-GDI 图形 (三)