当前位置: 首页 > news >正文

好的网站模板公司网页网站建设 ppt

好的网站模板,公司网页网站建设 ppt,建工集团官网,有没有可以做游戏的网站C多线程并发编程入门#xff08;目录#xff09; 本文用最简单易懂的实际案例#xff0c;讲清楚了 join 的实际内涵#xff0c;保证你过目不忘。 Hello join 示例 join 函数是我们接触C多线程 thread 遇到的第一个函数。 比如#xff1a; int main() {thread t(f);t.…C多线程并发编程入门目录 本文用最简单易懂的实际案例讲清楚了 join 的实际内涵保证你过目不忘。 Hello join 示例 join 函数是我们接触C多线程 thread 遇到的第一个函数。 比如 int main() {thread t(f);t.join(); }join 用来阻塞当前线程退出 join 表示线程 t 运行起来了。但是t 也阻碍了 main 线程的退出。 也就是说如果 f 的执行需要 5秒钟 main也要等待5秒才能退出。 这看起来非常合理因为 main 就应该等待 t 退出之后再退出。 main 等待所有线程 多个线程都以 join 的方式启动的时候main 就要等到最后。 比如 int main() {thread t1(f1);t1.join();thread t2(f2);t2.join(); } 假如 f1 需要执行5秒 f2 需要执行 1 秒 那么 main 就需要等待 max(5, 1) 5 秒。 整个过程中 f1 f2 各自独立运行谁运行谁的互不干涉。 执行示意图 完整示例 下面的代码main 线程 等待 first 线程 和 second 线程都退出之后再退出。 #include iostream #include thread #include chrono using namespace std; using namespace std::chrono;void first() {// simulate expensive operationstd::this_thread::sleep_for(std::chrono::seconds(5));cout first finished! endl; }void second() {// simulate expensive operationstd::this_thread::sleep_for(std::chrono::seconds(1));cout second finished! endl; }int main() {auto start std::chrono::system_clock::now();std::cout starting first helper...\n;std::thread helper1(first);std::cout starting second helper...\n;std::thread helper2(second);std::cout waiting for helpers to finish... std::endl;helper1.join();helper2.join();auto elapsed chrono::duration_castchrono::seconds(system_clock::now() - start).count();std::cout done! elapsed elapsed seconds.; }执行结果 main 等待所有线程的退出 可以看出main 确实是等待两个线程都执行完之后才退出的。 有一个细节 先执行完了 second 线程后执行完了 first 线程。 这样很正常 毕竟 second 线程耗时短1秒first 线程耗时长5秒。 所以main 等待了 5 秒钟才退出。 线程的嵌套join的弊端 实际工作中我们创建线程不大可能都在 main 函数中创建。 我们通常是在其他线程中遇到了某种事件发生这时候才知道要赶紧创建新的线程来执行某个新任务。 比如我们写了一个腾讯会议软件点击开始录制按钮的时候创建录制线程。 录制按钮的回调函数是在UI线程里执行的也就是创建录制线程并执行录制现场这件事发生在UI线程里。不在main线程里。 示例 int main() {thread ui(ui_fun);ui.join();//main等待整个窗口程序关闭再退出 }ui_fun() {thread button_clicked(on_button_clicked);//创建录制线程button_clicked.join();//执行录制动作 } 这种情况main 等待 ui 线程这没什么问题。但是 ui 等待 录制线程就会导致 ui 线程卡住。 此时你按界面上其他的按钮就不会有任何响应。这是不应该发生的。 执行示意图 main一共等待了156秒 完整示例 #include iostream #include thread #include chrono using namespace std; using namespace std::chrono;void record() {// simulate expensive operationstd::this_thread::sleep_for(std::chrono::seconds(1));cout record finished! endl; }void ui_fun() {std::cout starting record ...\n;std::thread record_thread(record);record_thread.join();// simulate expensive operationstd::this_thread::sleep_for(std::chrono::seconds(5));cout ui_fun finished! endl; }int main() {auto start std::chrono::system_clock::now();std::cout starting ui_fun ...\n;std::thread helper1(ui_fun);std::cout waiting for ui_fun to finish... std::endl;helper1.join();auto elapsed chrono::duration_castchrono::seconds(system_clock::now() - start).count();std::cout done! elapsed elapsed seconds.; }执行结果 参考 C std::thread join()的理解 - 代萌 - 博客园 (cnblogs.com) std::thread::join - cppreference.com
http://www.dnsts.com.cn/news/257880.html

相关文章:

  • wordpress 多站点 合集做网站公司需要帮客户承担广告法吗
  • 徐州企业自助建站包头正大光电 做网站
  • 提供网站制作公司报价ppt模板免费下载完整版免费简约
  • 南京网站设计课程网站建设建议
  • 网站首页改版影响优化小说手机网站建设
  • 个人网站怎么做 简历电子加工东莞网站建设
  • 纪念馆网站建设做个人网站需要哪些
  • 志迅东莞网站建设wordpress设置ip白名单
  • 网站正在建设 h5模板建设婚介网站
  • 科技类网站设计特点一个wordpress程序搭建多个网站
  • 帝国+只做网站地图纯注册app拉新挣钱
  • 南通seo网站价格网站建设制作文字教程
  • 做手机网站用什么设计工作室网站推荐
  • 二级网站建设情况说明美大门店管理系统
  • 张家港做网站的推荐seo综合查询国产
  • 在线服装设计网站国外源码网站
  • 青岛网站推广关键词h5企业模板网站模板下载
  • 自己做网站需要学些什么做的比较唯美的网站有哪些
  • 泉州专业建站公司张店网站开发招聘
  • 哪些网站的活动策划做的好图片上传不了网站
  • 阿里巴巴网站费用怎么做分录seo为什么不景气了
  • 北京网站制作公司报价公司企业简介图片
  • 有没有兼职做设计的网站吗靖安县城乡规划建设局网站
  • seo查询网站是什么网站 mvc 设计
  • 90设计网站可以商用吗东莞网站优化是什么
  • 如何做好电商群排名优化软件
  • 电商网站有哪些功能wordpress经典编辑器
  • 网站建设工作自查报告门户网站开发合同
  • 企业网站建设的目的有哪些枣庄高端品牌网站建设案例
  • 无锡网站公司门户网站申请