c++多线程入门

来源:互联网 发布:gigi和kendall 知乎 编辑:程序博客网 时间:2024/05/21 09:27
#include<iostream>
#include<thread>
#include<chrono>
using namespace std;
void hello()
{
cout << "hello world!\n";
}
void fun() {
cout << "fun()\n";
this_thread::sleep_for(chrono::seconds(5));//当前线程睡眠时间
}
void dosomething() {
cout << "dosomething()\n";
}
 class background_t {//可以用可调用(callable)类型构造,将带有函数调用符类型
//的实例传入 std::thread  类中,替换默认的构造函数。
  public:
void operator()()const{
fun();
dosomething();
}
};
int main()
{
background_t _ks;
/*try {
thread _m(_ks);
_m.join();
thread m_t{ background_t() };//实例化线程对象方法一
m_t.join();
thread m_k{ (background_t()) };//方法二
m_k.join();
  //thread m_k (background_t());//由于c++会把它命名解析为返回类型为thread的函数并且函数指针不带参数所以这种实例化方式错误
}
catch (...) {
return 0;
}*/
thread _m(fun);
cout << _m.joinable() << endl;
_m.join();
cout<<_m.joinable()<<endl;
return 0;
}
原创粉丝点击