win32汇编环境,对线程的创建与操作示例一

;运行效果

;win32汇编环境,对线程的创建与操作示例一
;线程是主进程之外并行运行着的过程,很多的时候,我们需要一些运算保持运行,但又不能影响进程,这个时候就需要线程
;比如,在游戏外挂之中,需要每隔几秒判断角色的状态,需要不断的输出等,这个时候就需要另外开线程运行。如果不另外开线程,它会影响主进程的运行。
;比如,角色回城后,到了NPC面前,需要延时等待一下,这时候相当于暂停状态,又不能影响主进程的线程运行。要是让主进程暂停了,后果可不好。
;比如,在连接网络时,需要时间证明连接上了,但却不知道究竟需要多久,这时候不能让主进程连接,应该让线程连接,否则主进程会一直卡着等待结果。
;比如,在连接网络时,无法判断已经完成接收了数据包,这个时候就需要线程来监听判断,如果用主进程接收,遇到网络延迟严重或其它问题,数据包迟迟无法接收完,会把主进程卡住。
;同时,线程的并行运行,也体现了并行处理的概念,能更充分地利用好系统资源等等。
;下面为asm文件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386 
.model flat,stdcall 
option casemap:none 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
include    windows.inc 
include    user32.inc 
include    kernel32.inc 
includelib user32.lib 
includelib kernel32.lib 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 自定义函数声明
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD   ;对话框窗口函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
.data 
DlgName    db "MyDialog",0 

szCaption  db "提示",0
szCheshi01 db "123",0
.data? 
hInstance HINSTANCE     ? 
hWinMain    dd    ?
hThreadID01     dd      ?        ;线程句柄,可用来结束线程,判断线程还在不在等
.const 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN    equ 1000    ;图标 
IDB01       equ 11      ;按钮控件标识符 
IDB02       equ 12  
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code 
start:     
        invoke GetModuleHandle, NULL     
        mov    hInstance,eax     
        invoke DialogBoxParam, hInstance, ADDR DlgName,NULL, addr DlgProc, NULL     
        invoke ExitProcess,eax 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>   
;线程函数
_Athread proc    ;函数功能:把"123"这个字符串的第1个字母与第3个字母的位置调换来过,显示出"321"       
        
        pushad   ;运行前建议先保存所有的寄存器值,退出时恢复       
        
        mov al,byte ptr [szCheshi01+2]
        mov bl,byte ptr [szCheshi01]
        mov byte ptr [szCheshi01],al
        mov byte ptr [szCheshi01+2],bl
     invoke  MessageBox,NULL,addr szCheshi01,addr szCaption,MB_OK
     
    popad    
        ret
_Athread endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM  
       .if      uMsg == WM_INITDIALOG                 
                        invoke    LoadIcon,hInstance,ICO_MAIN           
                        invoke    SendMessage,hWnd,WM_SETICON,ICON_BIG,eax 
        .elseif uMsg == WM_COMMAND  
                mov eax,wParam        
                .if     eax == IDB01
                        invoke    CreateThread,NULL,0,offset _Athread,NULL,NULL,addr hThreadID01       ;创建线程                                                                                                                                   
                .endif                      
        .elseif uMsg == WM_CLOSE 
                        invoke    CloseHandle,hThreadID01                                              ;退出程序前关闭线程           
                        invoke  EndDialog, hWnd,NULL        
        .else                
                mov eax,FALSE                 
                ret                 
        .endif                 
        mov eax,TRUE         
        ret 
DlgProc endp 

end start 

;下面为rc文件内容
#include "resource.h"              //提示缺少该文件,可以在资源里下载
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define    ICO_MAIN        1000    //图标 
#define    IDB01           11     
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN    ICON        "Main.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//定义对话框
MyDialog DIALOG 10, 10, 140, 40 
STYLE  DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK 
CAPTION "对话框程序模版"
FONT 11, "宋体"
 BEGIN 
     PUSHBUTTON      "启动线程A", IDB01,  10,10,120,14                                               
END 
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15556.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用 DeepSeek + Kimi 自动做 PPT,效率起飞

以下是使用 DeepSeek Kimi 自动做 PPT 的详细操作步骤: 利用 DeepSeek 生成 PPT 内容: 访问 DeepSeek 官网,完成注册/登录后进入对话界面。输入指令,例如“请用 Markdown 格式生成一份关于[具体主题]的 PPT 大纲,需包…

学习总结二十九

公路维修问题 这里首先先明白题意,就是一段路分为m段,只需要分m-1次。我们先要解决的的问题是如何在合适的地方截断。案例给出,发现第一段的末与第二段的头的位置相差很大,而每一段的每个坑位相差不是很大 。,所以就知…

C语言预处理艺术:编译前的魔法之旅

,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、预处理的作用与流程(1&…

【go】交叉编译

发现go像是c,做后台还是比较好的 使用的是goland编辑器,可以在windows编译在linux上运行,配置如下: Goland中导入包标红但是能用解决办法 复制了一份项目代码task为task_bk,但是原来的task删除了,再次 把t…

防御综合实验

需求一 配置vlan [SW2]int g 0/0/2 [SW2-GigabitEthernet0/0/2]port link-type access [SW2-GigabitEthernet0/0/2]port default vlan 10 [SW2-GigabitEthernet0/0/2]int g0/0/3 [SW2-GigabitEthernet0/0/3]port link-type access [SW2-GigabitEthernet0/0/3]port default vl…

数据库高安全—数据保护:数据动态脱敏

书接上文数据库高安全—审计追踪:传统审计&统一审计,从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读,本篇将从数据动态脱敏方面对高斯数据库的数据保护技术进行解读。 5.1 数据动态脱敏 数据脱敏,顾名思义就…

《艾尔登法环》运行时弹窗“由于找不到vcruntime140.dll,无法继续执行代码”要怎么解决?

宝子们,是不是在玩《艾尔登法环》的时候,突然弹出一个提示:“由于找不到vcruntime140.dll,无法继续执行代码”?这可真是让人着急上火!别慌,今天就给大家唠唠这个文件为啥会丢,还有怎…

【Git】Failed to connect to github.com port 443: Timed out

由于DNS污染国内访问github经常会超时,参考网上的方法修改host文件绑定ip过段时间就失效了,这里介绍一个修改工具,通过修改本地host来绕过国内DNS解析实现连接 UsbEAm Hosts Editor UsbEAm Hosts Editor [多平台hosts修改] V3.63 – Dogfigh…

qml RoundButton详解

1、概述 RoundButton是QML(Qt Modeling Language)中的一种按钮控件,它继承自Button控件,并增加了一个特殊的属性——radius,用于设置按钮圆角的半径。这使得RoundButton能够呈现为带有圆角的形状,而不仅仅…

Django在终端创建项目(pycharm Windows)

1.选择目录 选择或新建一个文件夹,作为项目保存的地方 2.右键在终端打开 3.确定django-admin.exe安装位置 找到自己安装django时,django-admin.exe安装的位置,例如 4.运行命令 使用django-admin.exe的绝对路径,在刚才打开的终端…

Visual Studio 2022 中使用 Google Test

要在 Visual Studio 2022 中使用 Google Test (gtest),可以按照以下步骤进行: 安装 Google Test:确保你已经安装了 Google Test。如果没有安装,可以通过 Visual Studio Installer 安装。在安装程序中,找到并选择 Googl…

Unity-Mirror网络框架-从入门到精通之LagCompensation示例

文章目录 前言什么是滞后补偿Lag Compensation示例延迟补偿原理ServerCubeClientCubeCapture2DSnapshot3D补充LagCompensation.cs 独立算法滞后补偿器组件注意:算法最小示例前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mir…

数据集成实例分享:金蝶云星空对接旺店通实现库存管理自动化

拆卸父项出库:金蝶云星空数据集成到旺店通企业奇门 在现代企业的运营过程中,数据的高效流动和准确处理至关重要。本文将分享一个实际案例,展示如何通过轻易云数据集成平台,将金蝶云星空的数据无缝对接到旺店通企业奇门&#xff0…

Git、Github和Gitee完整讲解:丛基础到进阶功能

第一部分:Git 是什么? 比喻:Git就像是一本“时光机日记本” 每一段代码的改动,Git都会帮你记录下来,像是在写日记。如果出现问题或者想查看之前的版本,Git可以带你“穿越回过去”,找到任意时间…

解锁 DeepSeek 模型高效部署密码:蓝耘平台深度剖析与实战应用

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

autMan奥特曼机器人-对接deepseek教程

一、安装插件ChatGPT 符合openai api协议的大模型均可使用此插件,包括chatgpt-4/chatgpt-3.5-turbo,可自定义服务地址和模型,指令:gpt,要求Python3.7以上,使用官方库https://github.com/openai/openai-pyt…

循环神经网络学习01——transformer:输入部分-嵌入层位置编码

一、介绍 1、核心思想 利用自注意力机制来捕获输入序列中各元素之间的全局依赖关系,无论这些元素之间的实际距离有多远。 自注意力机制:允许模型在处理序列的每个元素时,考虑到序列中的所有其他元素,从而捕捉它们之间的关系和依…

git rebase 和 git merge的区别

Rebase 可使提交树变得很干净, 所有的提交都在一条线上。 Merge 则是包含所有的调试记录,合并之后,父级的所有信息都会合并在一起 Rebase 修改了提交树的历史 比如, 提交 C1 可以被 rebase 到 C3 之后。这看起来 C1 中的工作是在 C3 之后进行的&#xf…

上马传奇新手起号攻略 上马传奇云手机开荒玩法

在上马传奇这款游戏中,我们可以选择合适的职业,参与各类玩法快速起号,今天就给大家一些攻略。 一、职业 1.游戏中的战士、法师、道士分别有三个分支,一共九个职业可以选择,选择之后不能转职,所以前期要慎重…

Redis 集群(Cluster)和基础的操作 部署实操篇

三主三从 集群概念 Redis 的哨兵模式,提高了系统的可用性,但是正在用来存储数据的还是 master 和 slave 节点,所有的数据都需要存储在单个 master 和 salve 节点中。 如果数据量很大,接近超出了 master / slave 所在机器的物理内…