C++11多线程01

#include <iostream>
#include <thread>

void thread_fun()
{
    std::cout<<"我是线程函数"<<std::endl;
}

int main()
{
    std::thread t(thread_fun);

    t.join(); //运行线程函数,主线程阻塞在这里,直到thread_fun()执行完毕

    return 0;
}

#include <iostream>
#include <thread>

void thread_fun()
{
    std::cout<<"我是线程函数"<<std::endl;
}

int main()
{
    std::thread t(thread_fun);

    t.detach(); //运行线程函数,不阻塞主线程

    return 0;
}

控制台没有显示任何字符,原因:使用detach开启子线程没有阻塞主线程,主线程已经执行完毕。

#include <iostream>
#include <thread>

void thread_fun()
{
    std::cout<<"我是线程函数"<<std::endl;
}

int main()
{
    std::thread t(thread_fun);

    t.detach(); //运行线程函数,不阻塞主线程

    t.join(); //detach后,不能再使用join

    return 0;
}

结论:detach后,不能再使用join

#include <iostream>
#include <thread>

void thread_fun()
{
    std::cout<<"我是线程函数"<<std::endl;
}

int main()
{
    std::thread t(thread_fun);

    t.detach(); //运行线程函数,不阻塞主线程

    if(t.joinable())
    {
        t.join(); //detach后,不能再使用join
    }
    else
    {
        std::cout<<"detach后,不能再使用join"<<std::endl;
    }

    return 0;
}

结论:可以使用joinable()判断是否可以join()

时间: 2024-12-18 06:26:32

C++11多线程01的相关文章

[c++11多线程]01

1 #include <QCoreApplication> 2 3 4 //1.Approaches to concurrency 5 // Each developer represents a thread,and each office represents a process 6 //--<1>The first approach is to have multiole single-threaded processes --> concurrency with mu

C++11多线程教学(一)

转载自:http://www.cnblogs.com/lidabo/p/3908705.html 本篇教学代码可在GitHub获得:https://github.com/sol-prog/threads. 在之前的教学中,我展示了一些最新进的C++11语言内容: 1. 正则表达式(http://solarianprogrammer.com/2011/10/12/cpp-11-regex-tutorial/) 2. raw string(http://solarianprogrammer.com/

C++11多线程教学(二)

转载自:http://www.cnblogs.com/lidabo/p/3908713.html C++11多线程教学II 从我最近 发布的C++11线程教学文章里,我们已经知道C++11线程写法与POSIX的pthreads写法相比,更为简洁.只需很少几个简单概念,我们就能搭 建相当复杂的处理图片程序,但是我们回避了线程同步的议题.在接下来的部分,我们将进入C++11多线程编程的同步领域,看看如何来同步一组并行的线程. 我们快速回顾一下如何利用c++11创建线程组.上次教学当中,我们用传统c数

C++11多线程编程之互斥量

+(UIImage*)createImageFromView:(UIView*)view { //obtain scale CGFloat scale = [UIScreen mainScreen].scale; 开始绘图,下面方法,第一个参数表示区域大小.第二个参数表示是否是非透明的.如果需要显示半透明效果,需要传NO,否则传YES.第三个参数就是屏幕密度了 UIGraphicsBeginImageContextWithOptions(CGSizeMake(view.frame.size.wi

接口2014年6月11日01:11:37

1 [1]C#中的接口和类有什么异同. 2 3 不同点: 4 不能直接实例化接口. 5 接口不包含方法的实现. 6 接口可以多继承,类只能单继承. 7 类定义可在不同的源文件之间进行拆分(partial). 8 9 相同点: 10 接口.类和结构都可以从多个接口继承. 11 接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员. 12 接口和类都可以包含事件.索引器.方法和属性(属性本质上是两个方法). 13 14 基础知识:接口只能定义方法(只能定义行为,不能定义实现也就是字段

C++11 多线程

C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件<thread>.<mutex>.<atomic>.<future>等用于支持多线程. 使用C++11开启一个线程是比较简单的,下面来看一个简单的例子: #include <thread> #include &

Linux下c++11多线程聊天室

刚看的c++11多线程,写个聊天室试试编译的时候加上 c++11 和 多线程库g++ -Wall -std=c++0x -pthread -o server server.cppserver 和client 都是 q 退出?1. [代码]server.cpp #include <iostream>#include <thread>#include <arpa/inet.h>#include <cstring>#include <vector>#i

c++11 多线程 -- 基本使用

c++11 多线程 – 基本使用 前言:这篇文章仅针对没有使用过c++11线程库的童鞋来快速入门,也是自己的一个简单记录,内容比较基础. -1.线程的基本使用 -2.互斥量 -3.条件变量 -4.原子变量 1.线程的基本使用 代码: #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <thread> #include <iostream> int k = 0;

C++11 并发指南一(C++11 多线程初探)(转)

引言 C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧,和大家共勉. 相信 Linux 程序员都用过 Pthread, 但有了 C++11 的 std::thread 以后,你可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大的提高,所以作为一名 C++ 程序员,熟悉 C++11 的多线程编程方式还是很有益处的. 如果你对 C+