windows多线程(一) 创建线程 CreateThread「建议收藏」

windows多线程(一) 创建线程 CreateThread「建议收藏」一线程创建函数CreateThread修改说明:"这里"说了另一种创建线程方法,使用_beginthreadex()更安全的创建线程,在实际使用中尽量使用_beginth

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

一 线程创建函数 CreateThread

修改说明:
这里 说了另一种创建线程方法,使用_beginthreadex()更安全的创建线程,在实际使用中尽量使用_beginthreadex()来创建线程,在博客中使用 CreateThread()l来创建线程其实是一种不太好的方法,不过这里只做原理分析,不用在实际项目中,暂且就这样吧!

1. 函数原型:


	HANDLE WINAPI CreateThread(
	  _In_opt_  LPSECURITY_ATTRIBUTES  lpThreadAttributes,   
	  _In_      SIZE_T                 dwStackSize,
	  _In_      LPTHREAD_START_ROUTINE lpStartAddress,
	  _In_opt_  LPVOID                 lpParameter,
	  _In_      DWORD                  dwCreationFlags,
	  _Out_opt_ LPDWORD                lpThreadId
	);

2. 参数说明:

  • 第一个参数 lpThreadAttributes 表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。

  • 第二个参数 dwStackSize 表示线程栈空间大小。传入0表示使用默认大小(1MB)。

  • 第三个参数 lpStartAddress 表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。

  • 第四个参数 lpParameter 是传给线程函数的参数。

  • 第五个参数 dwCreationFlags 指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。

  • 第六个参数 lpThreadId 将返回线程的ID号,传入NULL表示不需要返回该线程ID号。

3.返回值

线程创建成功返回新线程的句柄,失败返回NULL

二 实例



/* 创建第一个线程。主进程结束,则撤销线程。 */

#include<Windows.h>
#include<stdio.h>

DWORD WINAPI ThreadFunc(LPVOID);

void main()
{
	HANDLE hThread;
	DWORD  threadId;

	hThread = CreateThread(NULL, 0,	ThreadFunc, 0, 0, &threadId); // 创建线程
	printf("我是主线程, pid = %d\n", GetCurrentThreadId());  //输出主线程pid
	Sleep(2000);
}

DWORD WINAPI ThreadFunc(LPVOID p)
{	
	printf("我是子线程, pid = %d\n", GetCurrentThreadId());   //输出子线程pid
	return 0;
}




这个程序功能很简单,主线程创建一个线程,同时主线程和子线程分别向控制台输出线程的PID,如下图:
windows多线程(一) 创建线程 CreateThread「建议收藏」

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

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

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


相关推荐

  • 代码主题darcula_Intellij idea 中的Darcula主题怎么把颜色改回来?

    代码主题darcula_Intellij idea 中的Darcula主题怎么把颜色改回来?展开全部1、打开IDEA,点击File>Settings…2、直接搜索Color,点击Colorscheme。3、右侧Scheme下拉选择62616964757a686964616fe4b893e5b19e31333431356666,Darcula黑色主题。4、点击Apply应用,ok确认退出。完成。扩展资料:快捷键1、写代码时用Alt-Insert(Code|Generate…)…

    2022年6月27日
  • python求和怎么编程_python字符串数字求和

    python求和怎么编程_python字符串数字求和广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!的和实现环境:python3编辑器:pycharm分析:1、阶乘的计算就是比较麻烦的一部分,用递归函数实现是比较好的方案,先定义一个递归函数实现求阶乘功能。defrecursion(n):定义递归函数实现求阶乘功能ifn==1:return1else:returnn*recurs…

    2022年10月23日
  • qt录制屏幕_iphone录屏转gif

    qt录制屏幕_iphone录屏转gif一、说明:不断地截取选中的区域,然后将其制作成gif动图。二、效果图:1、可设置要录制屏幕的宽高,支持右下角直接拉动改变.2、可设置变宽的宽度3、可设置录屏控件的背景颜色4、可设置录制的帧数5、录制区域可自由拖动选择三、代码:1、main.cpp#pragmaexecution_character_set(“utf-8”)#include”gifwidget.h”#include<QApplication>#include<QTe

    2022年9月20日
  • 快速排序(Python实现)

    一、算法介绍快速排序是经常考查到的排序算法,这里对快排算法做一下总结。快速排序是“交换”类的排序,它通过多次划分操作实现排序!以升序为例,其执行流程可以概括为:每一趟排序选择当前所有子序列的一个关键字(通常是第一个)作为枢轴量,将子序列中比枢轴量小的移到枢轴前边,比枢轴大的移到枢轴后边,具体过程是一个交替扫描和交换的过程。当本趟所有子序列都被枢轴以上述规则划分完毕后会得到新的一组更短的子序列,…

    2022年4月6日
  • spss实现单因素方差分析怎么做_双因素方差分析例题

    spss实现单因素方差分析怎么做_双因素方差分析例题总目录:SPSS学习整理SPSS实现单因素方差分析目的适用情景数据处理SPSS操作SPSS输出结果分析知识点目的检验单因素水平下的一个或多个独立因变量均值是否存在显著性差异,即检验单因素各个水平的均值是否来自同一个总体。(因变量为连续变量)适用情景方差分析前提:各个总体服从正态分布各个总体方差相等观测值独立数据处理SPSS操作SPSS输出结果分析基本信息基于平均值显著性为0.729,大于0.05,认为各组总体方差相等F=8.744,显著性为0.007,小于0.

    2022年10月19日
  • leetcode76_leetcode72

    leetcode76_leetcode72一、问题描述Giventwointegers n and k,returnallpossiblecombinationsof k numbersoutof1… n.Forexample,If n =4and k =2,asolutionis:[[2,4],[3,4],[2,3],[1,2],[1,3]

    2022年9月19日

发表回复

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

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