c++11多线程学习笔记之一 thread基础使用
没啥好讲的 c++11 thread类的基本使用
#include "stdafx.h"
#include <iostream>
#include <thread> void Func(int n)
{
for (int i = 0; i < 3; ++i)
std::cout << "func " << i << std::endl;
} void RefFunc(int& n)
{
for (int i = 0; i < 3; ++i)
std::cout << "ref func " << i << std::endl;
} int _tmain(int argc, _TCHAR* argv[])
{
int n = 0;
std::thread t1; //无显示
std::thread t2(Func, n + 1); //调用非引用参数的函数
t2.join();
std::thread t3(RefFunc, std::ref(n));//调用引用参数的函数
std::thread t4(std::move(t3));
t4.join();
return 0;
}
代码展示了 thread类的几种用法。 传输函数合参数,带引用和不带引用两种。
其中t3使用了move将线程关联到t4
t3不在和线程关联。涉及到的move 见以后文章
显示如下:
func 0
func 1
func 2
ref func 0
ref func 1
ref func 2
请按任意键继续. . .
还有JOIN的使用方法.如果将join的代码提前,则两个线程的信息乱序输出
int _tmain(int argc, _TCHAR* argv[])
{
int n = 0;
std::thread t1; //无显示
std::thread t2(Func, n + 1); //调用非引用参数的函数
std::thread t3(RefFunc, std::ref(n));//调用引用参数的函数
std::thread t4(std::move(t3));
t2.join();
t4.join();
return 0;
}
显示如下:
func 0ref func 0
func 1
func 2
ref func 1
ref func 2
请按任意键继续. . .
c++11多线程学习笔记之一 thread基础使用的更多相关文章
- Java多线程学习笔记之一线程基础
1.进程与线程 1.1 进程:是正在运行中的程序的实例,一个运行中idea就是一个进程.进程有它自己的地址空间,一般情况下,包括文本区域(text region).数据区域(data region)和 ...
- c++11多线程学习笔记之四 生产消费者
#ifndef MY_QUEUE_H__ #define MY_QUEUE_H__ #include<list> #include<mutex> #include<thr ...
- c++11多线程学习笔记之三 condition_variable使用
从windows角度来说,condition_variable类似event. 阻塞等待出发,不过condition_variable可以批量出发. 代码如下: // 1111111.cpp : 定义 ...
- c++11多线程学习笔记之二 mutex使用
// 1111111.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include ...
- JAVA多线程学习笔记(1)
JAVA多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一 ...
- java多线程学习笔记——详细
一.线程类 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...
- 多线程学习笔记九之ThreadLocal
目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是W ...
- java进阶-多线程学习笔记
多线程学习笔记 1.什么是线程 操作系统中 打开一个程序就是一个进程 一个进程可以创建多个线程 现在系统中 系统调度的最小单元是线程 2.多线程有什么用? 发挥多核CPU的优势 如果使用多线程 将计算 ...
- Java多线程学习笔记(一)——多线程实现和安全问题
1. 线程.进程.多线程: 进程是正在执行的程序,线程是进程中的代码执行,多线程就是在一个进程中有多个线程同时执行不同的任务,就像QQ,既可以开视频,又可以同时打字聊天. 2.线程的特点: 1.运行任 ...
随机推荐
- uva-185-暴力枚举
请相信,这是一道水题,读了一周的题意 题意: 题目里面描述的那三个条件可以直接无视,关于罗马数字只要知道一个规则即可,映射如下 I 1 V 5X 10 L 50C 100 D 50 ...
- leetcode202
public class Solution { private int SumSqares(int n) { //将一个数字的各个数位的值分开存储 var list = new List<int ...
- JSON.Stringify()和JSON.parse()的比较使用
1. JSON.Stringify() 将一个对象解析成字符串 <script> function myonclick() { var value = $('select option: ...
- Activity服务类-8 RuntimeService服务类
一共89个接口1.启动流程实例(20个方法)//使用给定的键在流程定义的最新版本中启动一个新的流程实例.ProcessInstance startProcessInstanceByKey(String ...
- ABAP-Generate dynpro动态屏幕
1.获取屏幕参数值 FUN: RS_SCRP_GET_SCREEN_INFOS call function 'RS_SCRP_GET_SCREEN_INFOS' exporting dynnr = ' ...
- RxJava 与观察者模式
RxJava到底是什么?让我们直接跳过官方那种晦涩的追求精确的定义,其实初学RxJava只要把握两点:观察者模式和异步,就基本可以熟练使用RxJava了. 异步在这里并不需要做太多的解释,因为在概念和 ...
- tair介绍以及配置
简介 tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存 ...
- [转]Gulp思维 —— Gulp高级技巧
感受过gulp.js带来的兴奋过后,你需要的不仅仅是它的光鲜,而是切切实实的实例.这篇文章讨论了一些使用gulp.js时常踩的坑,以及一些更加高级和定制化的插件和流的使用技巧. 基本任务 gulp的基 ...
- python函数式编程(转)
函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是“怎么干”,而函数函数式编程的思考方式是我要“干什么”. 至于函数式编程的特点暂不总结,我们直接拿例子来体会什么是函数 ...
- Linux Shell中有三种引号的用法
Linux Shell中有三种引号,分别为双引号(" ").单引号(' ')以及反引号(` `). 其中双引号对字符串中出现的$.''.`和\进行替换:单引号不进行替换,将字符串中 ...