一个多线程的实例
#include "stdafx.h"
#include <windows.h>
DWORD __stdcall Func(LPVOID pm)
{
printf_s("this is a thread , id = %d \n" , GetCurrentThreadId());
return ;
}
int main()
{
HANDLE h = CreateThread(NULL, , Func, NULL, , NULL);
WaitForSingleObject(h, INFINITE); system("pause");
return ;
}

运行结果如下

CreateThread 函数原形

HANDLE WINAPI CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程内核对象的安全属性,NULL为默认设置

SIZE_T dwStackSize,//线程栈空间大小。0表示使用默认大小(1MB)

LPTHREAD_START_ROUTINE lpStartAddress,//线程函数地址

LPVOID lpParameter,//线程函数的参数

DWORD dwCreationFlags,//额外的标志来控制线程的创建,0表示立即执行

LPDWORD lpThreadId//线程的id号,NULL表示不需要返回  

);

函数返回线程的句柄

WaitForSingleObject 函数原形

DWORD WINAPI WaitForSingleObject(

HANDLE hHandle,  //内核对象句柄

DWORD dwMilliseconds //最长等待的时间,以毫秒为单位,如1000就表示1秒,传入0就立即返回,传入INFINITE表示无限等待。

);

WaitForSingleObject可以等待一个内核对象的触发,因为线程在运行的时候是未触发的,线程结束,线程对象处于触发状态,所以可以用

WaitForSingleObject(h, INFINITE);

等待一个线程执行完毕,

函数返回,

WAIT_OBJECT_0 对象在等待时间内触发

WAIT_TIMEOUT 对象在等待时间内未触发

WAIT_FAILED 参数错误

可以用下面的代码来判断一个线程是否正在运行状态

bool IsRuning()
{
//运行检测
if (m_hThreadHandle==NULL) return false;
if (WaitForSingleObject(m_hThreadHandle,)!=WAIT_TIMEOUT) return false; //传0表示立即返回,WAIT_TIMEOUT表示对象未触发,也就是线程未停止
    return true; 
}
												

C++多线程1的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  3. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  4. Java多线程

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程.   进程:进程 ...

  5. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  6. Java多线程基础——对象及变量并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

  7. C#多线程之线程池篇3

    在上一篇C#多线程之线程池篇2中,我们主要学习了线程池和并行度以及如何实现取消选项的相关知识.在这一篇中,我们主要学习如何使用等待句柄和超时.使用计时器和使用BackgroundWorker组件的相关 ...

  8. C#多线程之线程池篇2

    在上一篇C#多线程之线程池篇1中,我们主要学习了如何在线程池中调用委托以及如何在线程池中执行异步操作,在这篇中,我们将学习线程池和并行度.实现取消选项的相关知识. 三.线程池和并行度 在这一小节中,我 ...

  9. C#多线程之线程池篇1

    在C#多线程之线程池篇中,我们将学习多线程访问共享资源的一些通用的技术,我们将学习到以下知识点: 在线程池中调用委托 在线程池中执行异步操作 线程池和并行度 实现取消选项 使用等待句柄和超时 使用计时 ...

  10. C#多线程之线程同步篇3

    在上一篇C#多线程之线程同步篇2中,我们主要学习了AutoResetEvent构造.ManualResetEventSlim构造和CountdownEvent构造,在这一篇中,我们将学习Barrier ...

随机推荐

  1. rgba()兼容IE8

    CSS: //一般的高级浏览器都支持 background: rgba(255,255,255,0.1); //IE8下 filter:progid:DXImageTransform.Microsof ...

  2. JQuery_DOM 简介/设置元素及内容

    一.DOM 简介 1.D 表示的是页面文档Document.O 表示对象,即一组含有独立特性的数据集合.M表示模型,即页面上的元素节点和文本节点. 2.DOM 有三种形式,标准DOM.HTML DOM ...

  3. JS实现页面打印

    [原文链接] 1.js实现(可实现局部打印) <input id="btnPrint" type="button" value="打印" ...

  4. Distributed Databases and Data Mining: Class timetable

    Course textbooks Text 1: M. T. Oszu and P. Valduriez, Principles of Distributed Database Systems, 2n ...

  5. 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)

    版权声明:本文由阁主的小跟班原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/695994001482226944 来源:腾云 ...

  6. javabean连数据库

    1.在src下建包,然后包中建javabean类,代码如下(我的包名为aa) package aa; import java.sql.*; public class bean { private fi ...

  7. ExtJS Grid导出excel文件

    ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...

  8. 将windows上的文件同步到linux上

    1.首先下载PSCP.exe,下载地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 2.将PSCP.exe拷贝到C: ...

  9. IOS开发常见错误整理

    1.Cannot create an NSPersistentStoreCoordinator with a nil model 这是在执行到这段代码时引发的: - (void)viewDidLoad ...

  10. sqlserver 事务日志过大 收缩方法解决方案

    sqlserver 事务日志过大,可能会导致备份失败或者数据库出现异常,所以要定期清除sqlserver 事务日志 建议:为了防止日志文件无限扩大,可以对日志文件作一些限制. 清除sqlserver事 ...