首页 > 代码库 > 线程基础2
线程基础2
#include <thread>void func(){ // do some work}int main(){ std::thread t(func); t.join(); return 0;}
带参数
void func(int i, double d, const std::string& s){ std::cout << i << ", " << d << ", " << s << std::endl;}int main(){ std::thread t(func, 1, 12.50, "sample"); t.join(); return 0;}
#include <thread>#include <iostream>#include <string>#include <functional>void greeting(std::string const& message){ std::cout<<message<<std::endl;}int main(){ std::thread t(std::bind(greeting,"hi!")); t.join();}
传引用
void func(int& a) //这里参数声明要是引用形式{ a++;}int main(){ int a = 42; std::thread t(func, std::ref(a)); // 配合函数声明为引用形式,这两者同时存在,a的值才能改变。 t.join(); std::cout << a << std::endl; return 0;}
线程调用:类重载()
#include <thread>#include <iostream>class SayHello{public: void operator()() const { std::cout<<"hello"<<std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
};int main(){ std::thread t((SayHello())); t.join();
SayHello hello; std::thread t1(hello); t1.join();
std::thread t2=std::thread(SayHello()); t2.join();
std::thread t3{ SayHello() };
t3.join();
}
线程调用:类成员函数:
#include <thread>#include <iostream># include <memory>class SayHello{public: void greeting() const { std::cout << "hello" << std::endl; } void good(std::string const& message) const { std::cout << message << std::endl; }};int main(){ SayHello x; std::thread t(&SayHello::greeting, &x); std::thread t1(&SayHello::good, &x, "good"); t.join(); t1.join(); std::shared_ptr<SayHello> p(new SayHello); std::thread t2(&SayHello::good, p, "goodbye"); t2.join();}
线程基础2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。