`

C++多线程的创建与使用

阅读更多
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>

DWORD WINAPI run(LPVOID p)
{
printf("three%d run..\n",p);
Sleep((DWORD)p*3000);
return (DWORD)p;
}

int main()
{
HANDLE three1 = NULL; //线程
HANDLE three2 = NULL;
DWORD uExitCode1 = 0; // 返回值
DWORD uExitCode2 = 0;
DWORD dwThId = 0;
DWORD dwThId1 = 0; // 线程id号
int c = 0;

three1 = CreateThread (NULL, 0, run, (LPVOID)1, 0, &dwThId);
three2 = CreateThread (NULL, 0, run, (LPVOID)2, 0, &dwThId1);

for (;;)
{
puts ("press any key to check thread ...");

_getch ();
//'GetExitCodeThread'函数来判断一个线程是否还在执行 说明 获取一个已
// 中止线程的退出代码 返回值 bool,非零表示成功,零表示失败。...

GetExitCodeThread (three2, &uExitCode2);

if (!c)
{
GetExitCodeThread (three1, &uExitCode1);

if (uExitCode1 == STILL_ACTIVE)
{
puts ("Thread1 still active");
}
else
{
printf ("Thread1 over with: %d\n", dwThId);

CloseHandle (three1);
c = 1;

printf ("Thread1 over with: %d\n",dwThId);
}
}

if (uExitCode2 == STILL_ACTIVE)
{
puts("Thread2 still active");
}
else
{
printf ("Thread2 over with: %d\n",dwThId1);
}

if ((uExitCode1!=STILL_ACTIVE) && (uExitCode2!=STILL_ACTIVE))
{
break;
}
}
// CloseHandle(three1); // 关闭线程句柄并不影响线程的执行
CloseHandle(three2);

return EXIT_SUCCESS;
}
分享到:
评论

相关推荐

    c++多线程的创建挂起执行与销毁

    否者就失去了多线程的意义) DWORD WINAPI ThreadFun(LPVOID pthread) //线程入口函数 { lpthread temp=(lpthread)pthread;//参数强制转换为结构体类型 temp-&gt;progress-&gt;SetPos(temp-&gt;pos); //设置被传递过来的...

    c++多线程编程的十个例子

    以下是对“C++多线程编程的十个例子”的详细讲解,这些例子将帮助你在Windows环境下深入理解和应用多线程。 1. **创建线程** C++11引入了`std::thread`库来创建和管理线程。例如,你可以通过传递函数或成员函数...

    基于VS2010的C++多线程开发Demo

    本文将深入探讨如何使用VS2010进行C++多线程开发,通过一个具体的Demo来阐述相关概念和技术。 首先,我们要明白C++中的多线程。在单线程程序中,所有任务都在同一个执行流中完成,而多线程则允许程序同时执行多个...

    C++多线程学习

    在"C++多线程学习"这个主题中,我们主要探讨的是如何在C++环境中创建和管理线程,以及解决并发访问时可能出现的问题。 一、C++11及后续版本中的多线程支持 自C++11标准开始,C++提供了内置的多线程库`&lt;thread&gt;`,...

    C++多线程SOCKET收发

    在C++编程中,多线程SOCKET收发是一项重要的技术,它允许程序同时处理多个网络连接,提高系统的并发性能。下面将详细讲解这个主题,包括C++中的多线程概念、SOCKET基础以及如何结合两者实现数据的收发。 首先,让...

    C++ 多线程日志记录

    总的来说,实现C++多线程日志记录需要理解多线程编程、同步机制以及日志管理的原理。通过分析提供的源代码文件,我们可以学习到如何将这些理论知识应用到实际的开发中,从而提高程序的并发性能和日志处理能力。

    C++多线程详解

    本文通过对C++多线程的详细介绍,包括线程创建、控制、调度和资源管理等方面,展示了如何在C++中有效利用多线程提升程序性能。理解并熟练掌握这些知识,将有助于开发者在实际项目中设计出更高效、更可靠的多线程应用...

    C++实现多线程文件复制.docx

    C++实现多线程文件复制 在文件复制过程中,多线程技术可以大大提高复制速度。下面将详细介绍C++实现多线程文件复制的知识点。 一、多线程文件复制的基本概念 多线程文件复制是指在文件复制过程中,使用多个线程...

    C++在多线程中使用mciSendString播放音乐demoB

    总结来说,"C++在多线程中使用mciSendString播放音乐demoB"展示了如何结合C++的多线程特性与Windows MCI服务来实现非阻塞的音乐播放。这涉及创建线程,定义线程函数,以及正确使用mciSendString函数发送播放命令。...

    C++多线程demo

    本示例"MultiThread"可能是包含一个C++多线程演示的代码库。 在C++11及其后续版本中,多线程功能被正式引入到标准库中,通过`&lt;thread&gt;`头文件提供。下面我们将深入探讨C++多线程的关键概念和实现方式: 1. **线程...

    C++多线程编程入门教程

    本文还将提供了多个C++多线程编程示例代码,涵盖了线程的创建、线程的状态、线程的同步和线程的通信等方面。这些示例代码将帮助读者更好地理解多线程编程的概念和实现方法。 通过本文的学习,读者将能够掌握多线程...

    Linux c++多线程串口编程demo

    本示例"Linux c++多线程串口编程demo"聚焦于利用多线程技术实现串口通信,这是一种常见的硬件接口,用于设备之间的数据交换。下面我们将深入探讨这个demo涉及的知识点。 1. **多线程编程**:在C++中,我们可以使用`...

    c++多线程源码

    `Mthread6`和`Mthread4`可能包含了上述概念的实践代码,通过阅读和学习这些代码,你可以深入理解C++多线程的使用和技巧。建议结合博客文章中的详细解释进行学习,以便更好地理解和应用这些知识。

    经典c++多线程演示

    在本“经典C++多线程演示”中,我们将深入探讨C++11及后续标准引入的多线程库,如何创建、启动、调度、同步、挂起以及终止线程。 首先,线程的创建通常通过`std::thread`类来实现。创建一个新线程,你需要提供一个...

    yolov5目标检测多线程C++部署

    ** yolov5目标检测多线程C++...总的来说,YOLOv5的C++多线程部署是一项综合了计算机视觉、深度学习、多线程编程和性能优化的复杂任务。理解这些知识点并灵活运用,能够帮助开发者构建出高效、可扩展的目标检测系统。

    C++学习 线程创建代码

    总之,这段代码提供了C++中使用Windows API创建和管理线程的基本框架,是理解和实现多线程编程的良好起点。对于初学者而言,通过修改线程函数和参数,可以进一步探索线程间的通信、同步机制以及多线程编程的复杂性。

    Visual C++ 多线程编程

    在这个主题中,我们将深入探讨如何使用Visual C++进行多线程编程,特别是涉及`CreateThread`,`CreateMutex`以及`WaitForSingleObject`这些关键函数的应用。 首先,让我们从`CreateThread`函数开始。这个函数是...

    C++多线程编程入门

    1. **线程创建与管理**:C++标准库提供了`&lt;thread&gt;`头文件来处理线程。通过`std::thread`类可以创建新的线程。例如,创建一个新线程执行特定函数,可以写为`std::thread myThread(myFunction);`。线程可以通过`join...

Global site tag (gtag.js) - Google Analytics