zoukankan      html  css  js  c++  java
  • 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
    请按任意键继续. . .

  • 相关阅读:
    Element-ui 复选框使用问题
    脚手架 oss 直传
    门外汉 avue使用
    cookie关闭浏览器清除
    关于(Incorrect string value: 'xF0x9Fx8ExBE' for column 'xxx' at row)报错
    扫码登录
    微信支付
    vue 腾讯地图 javaScriptAPI GL 多个markers自适应 (3)
    vue props 一次性传多个值
    vuex 的简单使用
  • 原文地址:https://www.cnblogs.com/itdef/p/4559090.html
Copyright © 2011-2022 走看看