首页 > 代码库 > C++11多线程01
C++11多线程01
#include <iostream> #include <thread> void thread_fun() { std::cout<<"我是线程函数"<<std::endl; } int main() { std::thread t(thread_fun); t.join(); //运行线程函数,主线程阻塞在这里,直到thread_fun()执行完毕 return 0; }
#include <iostream> #include <thread> void thread_fun() { std::cout<<"我是线程函数"<<std::endl; } int main() { std::thread t(thread_fun); t.detach(); //运行线程函数,不阻塞主线程 return 0; }
控制台没有显示任何字符,原因:使用detach开启子线程没有阻塞主线程,主线程已经执行完毕。
#include <iostream> #include <thread> void thread_fun() { std::cout<<"我是线程函数"<<std::endl; } int main() { std::thread t(thread_fun); t.detach(); //运行线程函数,不阻塞主线程 t.join(); //detach后,不能再使用join return 0; }
结论:detach后,不能再使用join
#include <iostream> #include <thread> void thread_fun() { std::cout<<"我是线程函数"<<std::endl; } int main() { std::thread t(thread_fun); t.detach(); //运行线程函数,不阻塞主线程 if(t.joinable()) { t.join(); //detach后,不能再使用join } else { std::cout<<"detach后,不能再使用join"<<std::endl; } return 0; }
结论:可以使用joinable()判断是否可以join()
C++11多线程01
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。