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. 四轴飞行器1.2.1 RT-Thread 环境搭建

    买的飞控板到了,开始写下位机的程序了,本来打算用UCOS的,因为以前用过,比较熟悉,可以很快上手,不过板子的卖家推荐了RT-Thread,以前虽然有接触过,但是没用过,于是去官网看了下,感觉还不错.其 ...

  2. 【转】vs2010下创建webservice

    题记:学了六个月java一直想做java,没想到进了.NET项目组,还是VB2012,还有WebService,压力山大,这篇纯粹看看多图的效果,版主不要怪罪. Visual Studio 2010默 ...

  3. 使用plist的好处

    首先:帮助节省内存.OpenGL ES纹理要求宽和高都是2的n次幂的倍数.我们可以考虑将小的图片拼大图片,然后统一加载.  其次:提高渲染速度.OpenGL ES要求切换的纹理越少越好,将图片拼成大图 ...

  4. Mac OS X 快捷键(完整篇)

    不少朋友提出要求,希望有个「高质量」的列表.其实这样的资源真是太多,平果官网就有 快捷键文档(多国语言版本).于是花了20分钟,浏览了一些网站,整理了点资源放过来供大家参考. 快捷键是通过按下键盘上的 ...

  5. 可爱的 Python : Python中函数式编程,第二部分

    英文原文:Charming Python: Functional programming in Python, Part 2,翻译:开源中国 摘要:  本专栏继续让David对Python中的函数式编 ...

  6. 【Daily】 2014-4-23

    KEEP GOING Think more product when face difference Check value null when insert/remove/update/add ch ...

  7. C++面向对象编程初步

    1,使用const 指针; const int * pOne; //指向整型常量的指针,指向的值不能修改; int * const pTwo; //指向整型的常量指针,指向的值可以修改,但该指针不能再 ...

  8. Windows系统的线程调度与软件中断分发

    在Windows操作系统内核把软件中断分为三个中断级别:DISPATCH_LEVEL,APC_LEVEL,PASSVIE_LEVEL.同时他们与线程的调试相关,WINDOWS内核中没有一个专门的程序来 ...

  9. Spring、实例化Bean的三种方法

    1.使用类构造器进行实例化 <bean id="personIService" class="cn.server.impl.PersonServiceImpl&qu ...

  10. Android UI ActionBar功能-自动隐藏 Action Bar

    为了使ActionBar不影响Activity的布局内容,我们还可以设置ActionBar,将其设置为透明,并且让Activity是头部自动空出一个ActionBar的空间: 官方文档:http:// ...