在c++11当中,大佬们终于承认了“线程的存在”,这就意味着,支持c++11的编译器,需要把os关于底层的线程的实现进行封装,从而给程序员们提供一个统一的api。
在c++11当中,要是想用线程相关的东西,需要引用新的头文件。举个helloworld的栗子:
-
#include <iostream>
-
#include <thread>
-
-
void func(){
-
std::cout<<"Hello world~"<<std::endl;
-
}
-
int main(int argc, char** argv) {
-
std::thread t(func);
-
t.join();
-
return 0;
-
}
这里thread的一个实例t,初始化的时候要给它一个
可调用类型(callable)类型,以便其开展工作,所以,除了函数之外,我们还可以将一个带有函数调用操作符的类的实例传递给std::thread的构造函数,如下:
-
#include <iostream>
-
#include <thread>
-
-
class task{
-
public:
-
void operator()() const{
-
do_func1();
-
do_func2();
-
}
-
void do_func1()const{ std::cout<<"func1"<<std::endl;}
-
void do_func2()const{ std::cout<<"func2"<<std::endl;}
-
};
-
int main(int argc, char** argv) {
-
task f;
-
std::thread my_thread(f);
-
my_thread.join();
-
return 0;
-
}
阅读(921) | 评论(0) | 转发(0) |