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

Win32汇编——多线程相关推荐

  1. 选择“Win32汇编”的三大理由?

    选择Win32汇编的理由是什么呢? 在DOS时代,学习汇编就是学习系统底层编程的代名词,仅要成为一名入门级的汇编程序员,就需要学习从CPU结构.CPU工作方式.各种硬件的编程方法到DOS工作方式等范围 ...

  2. 【win32汇编】0x01 开篇一些乱七八糟的话

    之前弄完了16位汇编,现在正式学习win32汇编,首先就是一些原理了,其实就是在16位的基础上增加了一些内容,其程序主要的结构记录如下 (1)指令集     .386     这是指定指令集 必须工作 ...

  3. Win32汇编_基础

    Win32汇编_基础 包含全部段的源程序结构: .386 .model flat, stdcall Option casemap:none ;<一些include语句> .stack [堆 ...

  4. win32汇编实现拼接SQL语句

    字符串合并,在汇编语言,一般是用loop循环和cx寄存器,自己编程实现: 如果是win32汇编,可以使用movsb指令: 一般开发应用程序都会碰到拼接SQL语句,在C#这些语言用字符串连接的加号就可以 ...

  5. Win32汇编获取和设置文本框的内容

    看一下Win32汇编如何获取和设置文本框的内容: 资源文件如下: #include <resource.h>#define ICO_MAIN 0x1000 //图标 #define DLG ...

  6. Win32汇编基本编程框架

    Win32汇编编程框架如下: .386 .model flat,stdcall option casemap:none <一些include语句> .stack [堆栈段的大小] .dat ...

  7. Win32 汇编环境和入门程序图解

    一 安装 在安装的最后,执行VBS脚本,在桌面建立快捷方式:执行快捷方式,会调入Win32汇编的编辑器qeditor.exe,进入到开发环境 二 构建Hello World程序 ;.386是伪指令 告 ...

  8. Win32 汇编语句模板

    Win32 汇编语句模板 一 变量 ;句柄 hInstance dd 0 hWnd dd 0 hPen dd 0 hPend dd 0 oldPen dd 0;过程变量 hInst :DWORD hP ...

  9. Win32汇编扩展教程

    Win32汇编扩展教程 第一课 Win32 扩展消息框示例 在罗哥云琳的Win32消息框示例基础上,做一个扩展例子. 首先弹出消息框,2个按钮,YESNO; 点击NO,程序结束:点击YES,弹出第二个 ...

最新文章

  1. P3175 [HAOI2015]按位或(Min - Max容斥,FMT,概率期望,全网最清晰的题解!)
  2. java web 哪些方法不能被从写_JAVA_WEB面试题
  3. 如何在TortoiseGit中使用ssh-keygen生成的key
  4. 【Java基础】语言基础知识
  5. html网页视频加滚动字幕,视频加一行滚动字幕
  6. Intel Realsense D435 python 从深度相机realsense生成pcl点云
  7. php 比较数组的不同的值,php array_udiff 比较两个数组的键值,并返回差集
  8. java B2B2C源码电子商务平台 - Zuul回退机制
  9. ajax点击事件触发后台,使用jquery点击事件触发AJAX
  10. Java 8中Lambda表达式的阴暗面
  11. pip安装requirement.txt
  12. Qt Qt5.15+Xcode12+BigSur macOS及iOS开发环境搭建
  13. ubuntu远程访问sftp服务器_ubuntu 下搭建sftp服务器
  14. 字节码层面理解枚举类Enum在switch中的使用
  15. mac虚拟机改显存_不同mac虚拟机下性能表现对比
  16. 内存占用过高,缓存不释放导致死机处理方案
  17. Flex 布局教程:语法篇
  18. XPU时代创新者英特尔
  19. SqlDBHelper(基础增删改查)
  20. 高阻态是0还是1_超实用买鞋指南!宽脚、胖脚、脚背高、磨脚...搞定各种买鞋难题!...

热门文章

  1. java输出横纵坐标点_java编程 知道坐标求三角形 做了一部分题目要求写出一个Point(点)类,该类具有x,y(表示点的横、纵坐标)两个属...
  2. tensorflow2.0 图像处理项目_UCOSIII移植——STM32F769I 图像处理能力评测之五
  3. cesium 加载科技感
  4. 新手学v-text指令
  5. tensorflow 数据归一化_TensorFlow——批量归一化操作
  6. gispython定义查询_定义查询方法
  7. python多元线性回归实例_关于多元线性回归分析——PythonSPSS
  8. 卡在linuxctrld进系统_Linux系统执行df -h命令卡死的解决方案
  9. infor wms 中英文对照_WMS系统中波次管理有多大作用
  10. 服务器网卡有什么作用,服务器网卡的作用