1 detach

脱离当前主线程,自由执行,乱序;

2 join()

等待模式,执行完再执行下一个

3 std::this_thread::get_id()

获取当前线程编号

4 std::thread::hardware_concurrency()

检测CPU有多少个核心

1 detach

脱离当前主线程,自由执行,乱序;

2 join()

等待模式,执行完再执行下一个

 #include <iostream>
#include <thread> void run(int num)
{
std::cout << "hello world" << num << std::endl;
} void main()
{
std::thread *p[]; for (int i = ; i < ; i++)
{
p[i] = new std::thread(run, i);//循环创建线程
//p[i]->join();//等待模式,执行完再执行下一个
p[i]->detach();//脱离当前主线程,自由执行,乱序;
} system("pause");
}

1 join()

等待模式,执行完再执行下一个

2 std::this_thread::get_id()

获取当前线程编号

3 std::thread::hardware_concurrency()

检测CPU有多少个核心

 #include <iostream>
#include <thread>
#include <windows.h> void msg()
{
MessageBoxA(, "对话框内容", "对话框标题", );//弹出对话框
} void main()
{
auto n = std::thread::hardware_concurrency();//检测CPU有多少个核心
std::cout << n << std::endl; std::cout << "thread=" << std::this_thread::get_id() << std::endl;//获取当前线程编号 std::thread thread1(msg);//创建多线程
std::thread thread2(msg); thread1.join();//开始执行,同时弹出2个对话框
thread2.join(); system("pause");
}

std::vector<std::thread *>threads;//创建一个数组,数组的元素数据类型是std::thread *

threads.push_back(new std::thread(msg));//创建线程,并添加到数组

 #include <iostream>
#include <thread>
#include <vector>
#include <windows.h> void msg()
{
MessageBoxA(, "对话框内容", "对话框标题", );//弹出对话框
} void main()
{
std::vector<std::thread *>threads;//创建一个数组,数组的元素数据类型是std::thread * for (int i = ; i < ; i++)
{
threads.push_back(new std::thread(msg));//创建线程,并添加到数组
} for (auto th : threads)//遍历数组
{
th->join();//执行数组中的线程
} system("pause");
}

threads.push_back(new std::thread(msgA, i));//创建线程,并添加到数组,传入参数i,进行通信

 #include <iostream>
#include <thread>
#include <vector>
#include <windows.h> void msgA(int num)
{
std::cout << std::this_thread::get_id() << " num=" << num << std::endl;//获取当前线程编号
MessageBoxA(, "对话框内容", "对话框标题", );//弹出对话框
} void main()
{
std::vector<std::thread *>threads;//创建一个数组,数组的元素数据类型是std::thread * for (int i = ; i < ; i++)
{
threads.push_back(new std::thread(msgA, i));//创建线程,并添加到数组,传入参数i,进行通信
} for (auto th : threads)//遍历数组
{
th->join();//执行数组中的线程
} system("pause");
}

#include <thread>的更多相关文章

  1. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  2. Entity Framework 6 Recipes 2nd Edition(13-9)译 -> 避免Include

    问题 你想不用Include()方法,立即加载一下相关的集合,并想通过EF的CodeFirst方式实现. 解决方案 假设你有一个如Figure 13-14所示的模型: Figure 13-14. A ...

  3. error RC1015: cannot open include file 'afxres.h' 解决办法

    在为WindowsPhone8程序添加本地化的过程中遇到这个问题: 问题原因就是afxres.h文件缺失,下载它,放到VS安装目录下的VS\include目录下就可以了(选择目录的时候注意对应对版本) ...

  4. Mybatis常用总结:参数,返回,执行sql,include等

    1.参数注入1.1用#{0},#{1}的形式,0代表第一个参数,1代表第二个参数 public List<RecordVo> queryList(String workerId, Inte ...

  5. jsp中的@include与jsp:include区别详解

    1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include ...

  6. JSP中编译指令include与动作指令include的区别

    include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改, 否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如 ...

  7. C/C++ 中的include

    当需要使用已有的方法或库时, 可以将它们的头文件#include进来. #include会在preprocess过程中被替换成它包含的代码. 头文件中包含了需要使用的函数/变量的声明. 当然声明与定义 ...

  8. 织梦多语言站点,{dede:include filename=''/}引入问题

    织梦模板include插入非模板目录文件出现"无法在这个位置找到"错误的解决办法 以下是dede V55_UTF8 查dede include标签手册 (3) include 引入 ...

  9. PHP 站点相对包含,路径的问题解决方法(include,require)

    以前看了,很多框架,基本上很少使用相对路径包含.而一般很多做php web站点,喜欢用相对路径. 认为这样,无论目录放到那里. 只要跟另外目录关系一致.那么就不会出现问题.如果一个站点,一般都认为,如 ...

  10. 如何让include标签包裹的布局置于屏幕最下方?

    如何让一个Layout 始终在屏幕的下方 我想让<include layout="@layout/bottom" />一直在屏幕下,怎么做? 1.相对布局中用属性  a ...

随机推荐

  1. linux查看系统的日志的一些实用操作

    last -a 把从何处登入系统的主机名称或ip地址,显示在最后一行. -d 指定记录文件.指定记录文件.将IP地址转换成主机名称. -f <记录文件> 指定记录文件. -n <显示 ...

  2. 【自学php】第二天 - php快速入门

    打算看<php和mysql web开发>来学习php,所以也算是这本书的学习笔记吧,也按照书里的例子来练习,但是也有些取舍.第一章是一个订单表单的例子,php用于处理提交的表单. 1.先创 ...

  3. item Collaborative Filtering

    算法步骤: 1.计算物品相似度 2.根据用户购买记录,推荐相似物品   物品相似度定义: A.    购买i的人里面,有多少比例购买了j    缺点(推荐系统需要能挖掘长尾信息,此处若j很热门,则w趋 ...

  4. strlen、strcmp、strcat、strcpy、memcpy基础函数的实现

    最近实习+投简历+琐事弄得自己忙的不行不行的,终于今天可以开始记录一些东西了... 1.strlen函数的实现 int strlen(const char *str){ assert(str!=NUL ...

  5. linux下主要是VirtualBox及GuestAdditions的安装

    Linux版本的VirtualBox下载:http://www.virtualbox.org/wiki/Linux_Downloads.请下载对应的版本. RedHat.RHEL:rpm -i vh ...

  6. 【翻译自mos文章】改变数据库用户sysman(该用户是DB Control Repository 的schema)password的方法

    改变数据库用户sysman(该用户是DB Control Repository 的schema)password的方法 參考原文: How To Change the Password of the ...

  7. leetCode 31.Next Permutation (下一个字典序排序) 解题思路和方法

    Next Permutation  Implement next permutation, which rearranges numbers into the lexicographically ne ...

  8. 说说VS 2015 RC最新开发工具的体验

    有两个我感觉是提高效率的地方: 1.智能提示的改进,鼠标只要移动到代码上面的类型.字段,就会显示相应的提示,这大大提高我们开发时候需要按F12才能看到定义的内容.下面上图,给大家形象化: 2.管理Nu ...

  9. Tomcat7配置数据源(Oracle)

    修改../conf/content.xml <?xml version='1.0' encoding='utf-8'?> <!-- The contents of this file ...

  10. scanf 和cin 的区别

    笔试的时候经常遇到突然string s;cin>>s; 有的时候编译会错误,不知道为什么. 今天在练习枚举类型的时候,也遇到这样一个问题. enum weekday{Monday,Tues ...