c++基础(thread)
Cplusplus-tutorial-in-hindi.jpg
线程是我们在编程中逃不开的话题,无论 java 、c# 还是 go 各种语言都有自己一套支持并发编程的支持。今天我们就来简单理解一下如何在 c++ 中创立thread以及使用thread。
#include <iostream>#include <thread>static bool is_Finished = false;void do_work(){ while (!is_Finished) { std::cout << "working...\n"; }}int main(int argc, char const *argv[]){ std::thread worker(do_work); std::cin.get(); is_Finished = true; worker.join(); std::cin.get();}- 引入
thread库,调用std::thead创立一个 worker 线程,而后传入一个函数do_worker在此线程中运行。 - std::cin.get() 这个函数我们一直在用,还没有解释过他的作用,作用是当程序之行到此会阻止线程执行等待客户输入回车后退出。
worker.join(),在线程中执行表示让主线等待worker执行完,在继续在主线程执行,有了 join 我们主线就会等待worker线程执行完毕后再继续执行。以免worker没有执行完就退出了。- 这里在
worker线程中循环执行输出working..知道我们输入回车在退出线程。
void do_work(){ using namespace std::literals::chrono_literals; while (!is_Finished) { std::cout << "working...\n"; std::this_thread::sleep_for(1s); }}std::this_thread::sleep_for(1s);可以让thread休眠 1 秒钟
g++ -std=c++14 thread1.cpp -o thread1void do_work(){ using namespace std::literals::chrono_literals; std::cout << "started thread id = " << std::this_thread::get_id() << std::endl; while (!is_Finished) { std::cout << "working...\n"; std::this_thread::sleep_for(1s); }}std::cout << "started thread id = " << std::this_thread::get_id() << std::endl;```输出 thread 的 id。说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » c++基础(thread)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » c++基础(thread)