2021-02-18

C++创建子线程

一、什么是子线程?
二、通过CreateThread函数创建子线程
三、未解决的疑问

什么是子线程?(个人理解)
首先我们知道,一个程序有一个入口,比如说C语言写的程序,运行的时候就是执行main函数里面的代码。
但是在实际中, 一条路走到黑是行不通的。有时候往往为了完成一个任务,需要执行其他任务辅助完成。
就比如说一个游戏辅助,它既要检测游戏有没有运行,还需要执行相应的辅助指令。就是说在整个游戏的运行过程中,需要一直检测游戏是否运行。因此,它需要一个单独的监控员专门做这个事情,监控员所做的这个事情,我们把它称作子线程。

通过CreateThread函数创建子线程

①创建全局的线程函数,不能在类里面声明,固定格式DWORD WINAPI func(LPVOID lpthreadparameter);
②在一个叫OnInitDialog初始化对话框的函数里面调用CreateThread函数,但是在此之前还需要在头文件声明handle句柄类型,成员变量用于接返回值;
③CreateThread(NULL,NULL,func,NULL,NULL,NULL);

未解决的问题
1、一开始和明杰老师跟着学习,看视频的时候,发现他的线程函数是DWORD func(LPVOID lpthreadparameter)这样写的,可以正常运行,但是我跟着他的代码一模一样,写下去的时候发现说CreateThread的参数无法接受func这个函数作为参数
当时拿着明杰老师的代码运行了一遍,和自己的对比一下,也没有发现问题,想了两三个小时,还没有找出问题。最后为了多活两年,放弃了,还是按照①中的固定格式吧。

上一篇:c-在成员函数上使用CreateThread的问题


下一篇:CreateThread() failed! Resource temporarily unavailable