53.创建线程_beginthread

本文介绍了如何使用标准库函数 `_beginthread` 创建线程,该函数可移植且内部调用`CreateThread`。虽然`CreateThread`也被提及,但不建议直接使用。此外,还提到了MFC中的`AfxBeginThread`函数,并提供了实例练习。

_beginthread创建进行,这个函数是标准库函数,可移植,其实这个函数也是调用CreateThread系统函数,不推荐使用CreateThread函数

#include <process.h>

/* function prototypes */

_CRTIMP uintptr_t __cdecl  //返回值为HANDLE hStdOut的新线程句柄,如果失败返回-1
_beginthread (
_In_ void (__cdecl * _StartAddress) (void *), //线程函数启动地址,_StartAddress为线程函数启动地址
_In_ unsigned _StackSize, //堆栈空间大小
_In_opt_ void * _ArgList //传递给_StartAddress线程函数的参数列表,没有参数时设置为NULL
);


_CRTIMP void __cdecl _endthread(void); //暴力结束 线程

_CRTIMP uintptr_t __cdecl 
_beginthreadex(
_In_opt_ void * _Security, //安全属性,默认安全属性为NULL
_In_ unsigned _StackSize, //堆栈空间大小
 _In_ unsigned (__stdcall * _StartAddress) (void *),  //启动线程函数
 _In_opt_ void * _ArgList,  //参数列表
_In_ unsigned _InitFlag,  //新线程的工作状态,0表示立即执行,还有CREATE_SUPPEND表示创建后挂起
_Out_opt_ unsigned * _ThrdAddr //输出线程ID
);

_CRTIMP void __cdecl _endthreadex(_In_ unsigned _Retval); 

MFC中创建线程
AfxBeginThread创建线程,

CWinThread* AFXAPI  //返回值是线程指针
AfxBeginThread(
CRuntimeClass* pThreadClass, //线程函数,全局函数或是类的静态函数
int nPriority,
UINT nStackSize,//堆栈大小
DWORD dwCreateFlags, 创建标记
LPSECURITY_ATTRIBUTES lpSecurityAttr //安全属性
s)

实例练习

// ThreadB.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "ThreadB.h"
#include <process.h>

#define MAX_LOADSTRING 100

VOID ThreadB(PVOID pVoid);
VOID ThreadC(PVOID pVoid);



// 全局变量:
HINSTANCE hInst;								// 当前实例
TCHAR szTitle[MAX_LOADSTRING];					// 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING];			// 主窗口类名

HWND hWnd;
i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值