在VC中如何创建多个线程

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在工作中我们经常会遇到要建立多个线程,以此方便于我们可以同时执行多个事件。

这也是我们在VC开发中的一项基础,虽然我曾多次用到,但也会常常忘记。这次记下来,作为一个笔记,为大家学习提供方便。

VC中,无非是创建线程和写线程函数

1,  创建线程:

#include <windows.h>

MFC中通常在OnInitDialog()下面创建线程

//定义参数:SerialControl

//------------------变量函数初始化调用区域--------

       CSerialControl * m_SerialControl=new CSerialControl();

       m_SerialControl->Create(NULL,"aa",WS_CHILD,CRect(0,0,0,0),this,2,NULL);

       m_SerialControl->InitAllSerialPort();

//------------------------------------------------

HANDLE hThread1=CreateThread(NULL,0,DetectCar,(LPVOID)SerialControl,0,NULL);

CloseHandle(hThread1);//此处关闭线程的句柄,但不意味关闭线程,线程在程序退出时关闭

参数说明:

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes,//必须为NULL

DWORD dwStackSize, //一般为0 ,表示堆栈与外部大小相同

LPTHREAD_START_ROUTINE lpStartAddress, //线程函数名称

LPVOID lpParameter, //传递给线程函数的参数,如果为多个,自定义结构体

DWORD dwCreationFlags, //0表示创建线程后立即启动线程,如果不是立即启动需要调用ResumeThread函数

LPDWORD lpThreadId);//用来标记该线程的名称

 

2,  定义线程函数:

//函数的定义

static       DWORD WINAPI DetectCar(LPVOID lpParameter); //一般用静态函数

//remark:由于线程函数是静态函数,如果要在函数中用到对象,必须通过

//函数的实现

/***************************************************

*作者:文演

*时间:2007-13-03

*函数:DetectCar() 说明:检测线程

****************************************************/

DWORD WINAPI CISSDlg::DetectCar(LPVOID lpParameter)

{

       TRACE("Thread DetectCar is running/r/n");

       CSerialControl* SControl=(CSerialControl*)lpParameter;

       //define:record which road is car

       int Carexit=0;

       while (TRUE)//do this forever

       {

              //get:which road exit car

              Carexit=SControl->m_GroudDetector1.CarExists();

              ***********

       }

       return true;

}

 
VC:多线程编程 一、创建工作者线程 1、创建一个基于对话框的应用程序。2、在对话框上面添加一个按钮控件,其ID为ID_START,标题为“开始工作者线程”,再添加一个进度条控件,并利用类向导添加变量:CprogressCtrl m_progress;3、在C*Dlg.cpp中添加结构体如下:struct threadInfo{ int i; CProgressCtrl * pctrlProgress;}Info... 阅读详情

相关推荐

VC++多线程全面讲解

使用 Spy++ 工具查看系统中当前的进程与线程! 1、创建线程的三种方式: 方式一:CreateThread(记得关闭线程句柄) 使用情况:无MFC时使用。 方式二:AfxBeginThread(会自动释放的,不用你去释放) 使用情况:MFC中有界面的程序中可以用;可以使用工作线程和界面现场。 方式三:_beginthreadex(记得关闭线程句柄) 与操作系统相关的系统中使用 ①、我们的程序到底是不是多线程运行的?有什么优点呢? 加个 Sleep(1000*10) 便知分晓,即对于一些比较耗时的操作,

qq_43123271的博客 3918

VC++回顾----多线程

今天,在C++的基础上来进行提升,学习VC++多线程编程。 线程:是为了提高系统内程序的并发执行程度而提出来的概念,他是比进程更小的能独立运行的基本单位。 线程的组成: 线程的内核对象:操作系统用它来对线程实施管理;内核对象也是系统用来存放线程统计信息的地方。 线程栈:它用于维护线程在执行代码时所需要的所有函数参数和局部变量。 创建线程的方法与区别:(C/C++/MF

yangqingwen911的专栏 580

VC线程编程(转)

VC线程编程(转)VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好. 一、问题的提出编写一个耗时的单线程程序:  新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void C

todototry的专栏 2253

VC创建多个线程的方法

作中我们经常会遇到要建立多个线程,以此方便于我们可以同时执行多个事件。这也是我们在VC开发中的一项基础,虽然我曾多次用到,但也会常常忘记。这次记下来,作为一个笔记,为大家学习提供方便。 在VC中,无非是创建线程和写线程函数 一、常规方法:纯使用Platform SDKAPI. 1,  创建线程: #include  在MFC中通常在OnInitDialog()下面创建线程

bluelilyabc的专栏 874

c语言里 如何取得线程的lpparameter'参数,09年计算机二级辅导:VC创建多个线程的方法...

09年计算机二级辅导:VC创建多个线程的方法分类:计算机等级|更新时间:2016-07-07|来源:中华网考试在VC中,无非是创建线程和写线程函数1, 创建线程:  #includeMFC中通常在OnInitDialog()下面创建线程//定义参数:SerialControl//------------------变量函数初始化调用区域--------CSerialControl * m_S...

weixin_33966205的博客 183

VC线程编程实例

在本文中我们以实例的形式来介绍一下VC中的多线程编程,本文中没有涉及线程的相关同步问题我们更多的是讲述VC下的线程相关操作与编写方法等,至于线程的同步问题请参见《WinCE线程同步》;也许你会问为什么是参见WinCE的东西而不是参见Wincows的东西呢?因为我们知道WinCE、WinMoblie、Windows等的相关API与内核对象其本相同。 一、多线程概述   进程和线程都是操作系统的概...

weixin_34212762的博客 1347

多个线程调用同一个线程函数的方法

如果是在用VC中想用多个线程运行同样的任务,而这些任务之间没有通讯问题和内存共享的问题(只要线程里面不用全局或者静态变量就行,要用就要锁)那可以用下面的模板: DWORD WINAPI TaskThreadProc(LPVOID) { // 独立任务 // ... } void RunTaskUseMultiThread(int nThreadCount) // 线程个数为nThreadCount

shikelang的专栏 2881

VC线程编程

                                   【转】VC线程编程1一、问题的提出编写一个耗时的单线程程序:  新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时

梦回大唐 741

VC环境下的多线程API

第一篇:VC 多线程编程 --转载自:Virtual Me的新浪博客,http://blog.sina.com.cn/s/blog_467338ba0100008a.html   一、创建一个线程        HANDLE CreateThread(     LPSECURITY_ATTRIBUTES lpThreadAttributes,     SIZE_T dwSt

程序猿的实验室 2915

VC线程

<br />VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好. <br />一、问题的提出<br />编写一个耗时的单线程程序:<br />  新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: <br />void CSingleThreadDlg::OnSleepSixSecond() <br />{<br /> Sl

WINCOL的专栏 965

Visual C++网络编程经典案例详解 第3章 多线程与异步套接字编程 多线程技术 创建线程

vc里面创建控制台 程序名修改为 创建线程 添加空白C++源文件 创建线程实例 #include &lt;windows.h&gt;                                //包含相应头文件 #include &lt;stdio.h&gt;                                  DWORD WINAPI myfun1(LPVOID lpPar...

eyetired的博客 412
上一篇: 边缘检测法(综合整理)
下一篇: 阈值分割法简述
ywywcy
博客等级 码龄19年 40粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值