1.4 新手入门

时间:2015-04-07 11:54:14   收藏:0   阅读:218

你现在有一个比较好的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()函数,它将等待线程执行完。

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

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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!