c++ CreateThread

c++ CreateThread1.基本使用方式1.1DWORDWINAPI函数名(LPVOIDlpParam);//标准格式DWORDWINAPI函数名(LPVOIDlpParam){return0;}CreateThread(NULL,0,函数名,0,0,0);1.2使用void函数名()此种线程声明方式时,lpStartAddress需要加入LPTHREAD_START_ROUTINE转换void函数名(){return;}CreateThre

大家好,又见面了,我是你们的朋友全栈君。

1.基本使用方式

1.1 DWORD WINAPI 函数名 (LPVOID lpParam); //标准格式

DWORD WINAPI 函数名 (LPVOID lpParam)
{
    return 0;
}
CreateThread(NULL, 0, 函数名, 0, 0, 0);

1.2 使用void 函数名()此种线程声明方式时,lpStartAddress需要加入LPTHREAD_START_ROUTINE转换

void 函数名()
{
    return;
}
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)函数名, 0, 0, 0);

2 函数原型 

HANDLE CreateThread(
    LPSECURITY_ATTRIBUTES lpThreadAttributes,//SD
    SIZE_T dwStackSize,//initialstacksize
    LPTHREAD_START_ROUTINE lpStartAddress,//threadfunction
    LPVOID lpParameter,//threadargument
    DWORD dwCreationFlags,//creationoption
    LPDWORD lpThreadId//threadidentifier
)

3 参数说明 

类型 名称 说明(英语) 说明(汉语) 详细
    LPSECURITY_ATTRIBUTES
 
lpThreadAttributes ,SD   指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,NULL使用默认安全性,不可以被子线程继承,否则需要定义一个结构体将它的bInheritHandle成员初始化为TRUE
  SIZE_T
   
dwStackSize initialstacksize 初始堆栈大小 设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据需要动态延长堆栈的大小。
LPTHREAD_START_ROUTINE
   
lpStartAddress threadfunction 线程函数 指向线程函数的指针
LPVOID
 
lpParameter threadargument 线程 参数 向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。
  DWORD
 
dwCreationFlags creationoption 创建选项

线程标志,可取值如下

(1)CREATE_SUSPENDED(0x00000004):创建一个挂起的线程,

(2)0:表示创建后立即激活。

(3)STACK_SIZE_PARAM_IS_A_RESERVATION(0x00010000):dwStackSize参数指定初始的保留堆栈 的大小,否则,dwStackSize指定提交的大小。

该标记值在Windows 2000/NT and Windows Me/98/95上不支持。

  LPDWORD lpThreadId threadidentifier 线程标识符 lpThreadId:保存新线程的id。
返回值:函数成功,返回线程句柄;函数失败返回false。若不想返回线程ID,设置值为NULL。

4.补记

4.1 CreateThread是一种微软在Windows API中提供了建立新的线程的函数,该函数在主线程的基础上创建一个新线程。线程终止运行后,线程对象仍然在系统中,必须通过CloseHandle函数来关闭该线程对象。
4.2 需要调用到CRT库时,不要用CreateThread 创建线程、并用CloseHandle来关闭这个线程,而应该用_beginthread来创建线程,_endthread来销毁线程。因为没有对子线程为CRT库分配堆,会导致低内存错误而崩溃。
4.3 CreateThread 不会判断lpStartAddr是数据还是代码,甚至不会判断是否有足够的访问权限。lpStartAddr可以未必是个函数,也可以是类成员,只要将函数指针强制转换,并且不产生栈溢出和没有访问权限的问题就以及类如未定义的指令之类的错误可以顺利执行线程。创建类成员函数的对象时,this指针是调用CreateThread时所处的类对象的指针。在类对象外调用,其this指针将是未知的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162685.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • vue监听页面刷新事件_vue监听数据变化自动刷新

    vue监听页面刷新事件_vue监听数据变化自动刷新运用的知识点:JavaScript的onbeforeunload函数使用方法window.onbeforeunload=function(){  return‘’;}注意:有返回值(”,true,false…都可以)才能弹出显示,或者有需要执行的事件也行。onload、onunload、onbeforeunload的执行问题:页面加载…

    2022年10月24日
  • WTM框架使用技巧之:Layui版本嫁接Vue+ElementUI[通俗易懂]

    WTM框架使用技巧之:Layui版本嫁接Vue+ElementUI[通俗易懂]为什么要这样做layui版本具备很多优点:组件齐全、ide提醒程度高、代码量少、依赖少、编译快、运行快,非常适合一个人的开发全队。但它也有很多缺点,比如说组件灵活度低、可控性差。受blazorssr的思路启发,将vue嫁接进layui版本中,在大部分常规页面中,保留layui的快速高效用法。在极少部分需要大量定制化的页面,采用vue+elementUI的方式编写,既能保证开发效率,又能解决复杂页面编写。因此本文拿一个页面改造的例子,旨在抛砖引玉。准备工作在_Layout中引入包_Layo

    2022年6月25日
  • 索尼a5100微单参数_索尼微单a5100拍摄教程

    索尼a5100微单参数_索尼微单a5100拍摄教程入门的第一款微单—SONYa51002018-11-1109:33:0012点赞20收藏33评论开篇:这一刻我想将你永恒定格上帝给我我们一双黑色的眼睛,让我们用它来寻找光明。在寻找光明的途中我们发现光和影这一双神奇的上帝之手,让我们生活的环境变得那么的美好。有无数个美好的瞬间在我们眼前,多么希望将这个美好定格,留下这美丽的瞬间。正文:咔嚓之间将你定格——入门的第一款相机说到相机可谓是百家争…

    2022年11月2日
  • 贴片电阻查询_贴片电阻的封装是什么

    贴片电阻查询_贴片电阻的封装是什么随着新技术的不断发展,目前电阻的种类有很多种,常见的有:薄膜和厚膜电阻(贴片电阻)、金属膜电阻、碳膜电阻、绕线电阻等。其中,贴片电阻器又可分为低阻值贴片电阻器,贴片电阻器阵列,贴片网络电阻器等。贴片电阻器的封装和尺寸的关系(长,宽,高)0201封装电阻对应的尺寸大小为(0.6,0.3,0.23),0402封装电阻对应的尺寸大小为(1.0,0.5,0.3),0603封装电阻对应的尺寸大小为(1.6,0.8,0.4),0805封装电阻对应的尺寸大小为(2.0,1.25,0.5),1206封装电阻对应的尺寸.

    2022年8月21日
  • JSP+JavaBean+DAO模式+MySQL实现一个简单的注册登录(新闻登录系统)

    JSP+JavaBean+DAO模式+MySQL实现一个简单的注册登录(新闻登录系统)项目结构:首先给大家看一下项目的结构。JSP页面:登录页面:注册页面:主页面:项目相对比较简单,仅仅就是实现了一个CURD的功能。在登录和注册中还有一个弹出提示。大家有兴趣的话可以去尝试做一下,项目我会上传~…

    2022年7月12日
  • 行为识别综述

    行为识别综述定义背景难点最新论文最新算法数据集1定义行为识别:行为识别(ActionRecognition)任务是从视频剪辑(2D帧序列)中识别不同的动作,其中动作可以在视频的整个持续时间内执行或不执行。行为识别似乎是图像分类任务到多个帧的扩展,然后聚合来自每帧的预测。尽管图像分类取得了很大的成功,但是视频分类和表示学习依然进展缓慢。2背景2.1方法2.1.1传统方法提取视频区域的局部高维视觉特征,然后组合成固定大小的视频级描述,最后利用分类器(SVM,RF等)进行最终预测2.

    2022年6月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号