码迷,mamicode.com
首页 > 其他好文 > 详细

1.4 新手入门

时间:2015-04-07 11:55:25      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:c++   c++11   cpp   linux   多线程   

你现在有一个比较好的C++11的编译器,那么接下来呢?一个多线程的C++程序是什么样的?它看上去和其他的C++程序没什么两样,都是变量类和函数的混合。唯一的不一样可能是他们是同步执行的,所以你需要确定并行访问的数据是安全的,当然为了并行运行函数,必须使用特定的类和函数管理不同的线程。

1.4.1 你好并行的世界

一个程序打印“HelloWorld”,在单线程中的运行程序:

#include <iostream>

int main()

{

std::cout << "Hello World\n";

}

并行程序中:

#include <iostream>

#include <thread>

void hello()

{

std::cout << "Hello Concurrent World\n";

}

int main()

{

std::thread t(hello);

t.join();

}

第一个不同是#include <thread>,这个是多线程库的头文件:管理多线程的函数和类在thread中声明,但是保护共享数据的声明在其他头文件中

第二,打印的代码被移到一个单独的函数中,这是因为每个线程都必须有一个初始函数,它是新线程的执行开始,对于一个程序的初始线程是main函数,但是对于每一个在std::thread object中指定的线程必须有一个新函数作为它的起始函数,比如本程序中的hello()。

下面的不同:比直接在main中写标准的输出或调用hello,这个程序时新建一个线程去执行。一共有两个线程,一个是main的起始线程(主线程),一个是执行hello的线程。

新线程被执行后,主线程继续执行,如不等待新线程完成,它将继续执行到结束,可能在新线程有机会执行前。这就是为什么调用join()函数,它将等待线程执行完。

对于标准输出这样简单的工作去使用多线程是不值得的,特别是主线程没什么事情要做。稍后我们将展示一个使用多线程的例子。

1.4 新手入门

标签:c++   c++11   cpp   linux   多线程   

原文地址:http://blog.csdn.net/ctxbloger/article/details/44917345

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!