网站怎么进行优化排名免费网站在哪里申请表

张小明 2026/1/12 7:01:24
网站怎么进行优化排名,免费网站在哪里申请表,济南网站建设泰观网络,阿里云服务器做盗版电影网站1.线程库的基本使用在C11中引入了原生的线程支持#xff0c;包含在thread头文件中#xff0c;我们下面来看看该线程库的基本使用方法#xff0c;先看下面这段程序。#include iostream #include threadvoid show(void) {std::cout he…1.线程库的基本使用在C11中引入了原生的线程支持包含在thread头文件中我们下面来看看该线程库的基本使用方法先看下面这段程序。#include iostream #include thread void show(void) { std::cout hello thread std::endl; } int main() { std::thread thread(show); std::cout main std::endl; return 0; }我们创建了一个线程对象将show函数作为入口传入。当我们运行时有以下运行结果虽然我们的hello thread成功输出出来了但是却出现了错误这是因为在我们子线程还没有结束时我们的main线程已经return结束啦就导致出现了错误。那么怎么办呢我们来看下面这段程序#include iostream #include thread void show(void) { std::cout hello thread std::endl; } int main() { std::thread thread(show); std::cout main std::endl; thread.join(); return 0; }我们再来看运行结果可见我们在main结束前加入了一句thread.join()就解决了这个问题这是因为当这个调用时一个阻塞调用主线程运行到这里后就会被阻塞只有当子线程结束后主线程才能进行往下执行。所以就解决了上面子线程还没有结束主线程就结束了导致的报错我们将上面的程序修改一下会有更明显得体现如下#include iostream #include thread void show(void) { for (int i 0; i 100000; i) { std::cout hello thread std::endl; } } int main() { std::thread thread(show); thread.join(); std::cout main std::endl; return 0; }运行结果为可见mian的输出是在子线程输出完后再输出的。当然我们还可以是用另一个方法来解决上面报错问题。#include iostream #include thread void show(void) { std::cout hello thread std::endl; } int main() { std::thread thread(show); std::cout main std::endl; thread.detach(); return 0; }运行结果为我们可以看到确实没有报错了但是我们的hellothread确没有被输出出来。这是因为当主函数运行到thread.detach时子线程和主线程分离了子线程进入后台执行而主线程后面就立即结束了所以就没有输出但是主线程结束后子线程还可以自动在后台运行。接着我们来看看当要传入参数怎么书写程序#include iostream #include thread #include string using namespace std; void show(string s) { cout s endl; } int main() { thread thread(show,hello thread); cout main endl; thread.join(); return 0; }我们只需要在创建thread对象传入一个所需的参数即可。看运行结果2.线程使用过程中的易错问题1线程间传递临时变量我们来看下面的程序#include iostream #include thread #include string using namespace std; void process(int n) { n 1; } int main() { int data 1; thread thread(process,data); thread.join(); cout data data endl; return 0; }我们想启用一个线程process对我们创建的data进行加1操作时用上面的程序能不能做到呢看运行结果可见直接出现了错误这是因为我们在线程间传递临时变量出现的错误我们通过std::ref来解决该问题程序如下所示#include iostream #include thread #include string using namespace std; void process(int n) { n 1; } int main() { int data 1; thread thread(process,ref(data)); thread.join(); cout data data endl; return 0; }2传递指针和引用时指向局部变量我们看下面这段程序#include iostream #include thread #include string using namespace std; thread t; void process(int n) { n 1; } void func(void) { int data 1; t thread(process, ref(data)); } int main() { func(); t.join(); return 0; }我们可以知道data局部变量在func函数结束后会被释放所以等到引用n在使用data那块空间时已经被释放了所以就会出现报错指针也是一样的那么怎么解决呢我们可以将data定义为全局变量即可。3类成员函数作为入口参数类对象被提前释放我们看下面这段程序#include iostream #include thread #include string using namespace std; class A { public: void show() { cout A endl; } }; int main() { A a; thread t(A::show,a); return 0; }当线程的入口参数时类成员函数时我们还要将类的对象的地址也作为参数传入。这里因为我们创建一个对象所以我们要进行销毁但是销毁的时机我们却不好把握。这里如果当对象a被提前销毁了而线程想要使用类的成员函数就会出现问题。对于这个问题我们可以使用智能指针的方法来解决。看下面的程序#include iostream #include thread #include string #include memory using namespace std; thread t; class A { public: void show() { cout A endl; } }; int main() { shared_ptrA a make_sharedA(); thread t(A::show, a); t.join(); return 0; }对于智能指针来说当其在没有地方使用时就会自动释放掉既不会造成内存的泄露也能更好的让线程执行类的成员函数。4使用类的私有成员函数作为线程的入口参数对于这个问题我们可以使用友元函数进行解决如下#include iostream #include thread #include string #include memory using namespace std; thread t; class A { private: friend void func(); void show() { cout A endl; } }; void func() { shared_ptrA a make_sharedA(); thread t(A::show, a); t.join(); } int main() { func(); return 0; }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站在什么地方设关键词在建设官网的公司做运营

终极C网络编程:构建高性能HTTP服务的完整指南 【免费下载链接】cpp-httplib A C header-only HTTP/HTTPS server and client library 项目地址: https://gitcode.com/GitHub_Trending/cp/cpp-httplib 在现代网络应用开发中,性能瓶颈常常成为制约系…

张小明 2026/1/9 16:06:17 网站建设

网站开发连接数据库拓客引流推广

Langchain-Chatchat Ansible自动化知识查询平台 在当今企业数字化转型的浪潮中,如何高效管理和利用内部知识资产,正成为组织提升运营效率与合规能力的关键命题。尽管通用大模型展现出强大的语言理解能力,但面对企业私有文档、制度文件或专业领…

张小明 2025/12/25 7:43:24 网站建设

只有一个页面的网站网站源码生成器

问题描述:退化的意思是不是,机器人不知道自己的位置和方向了,一般来说在非退化场景,周围的环境可以给自身一个约束,这个约束是满秩,可以确定自身位置,如果面临退化环境,比如空旷的地…

张小明 2025/12/25 7:39:21 网站建设

多城市二手车网站源码泉州 网站建设

Day 16: 生成模型基础 (Generative Models Basics) 摘要:在前面的课程中,我们学习的分类、检测、分割任务都属于判别式模型(判断“是什么”)。而今天,我们将进入生成式模型(创造“有什么”)的奇…

张小明 2026/1/1 0:47:43 网站建设

网站广告位一般多少钱wordpress官方空间

快速上手SENAITE LIMS:5步搭建实验室信息管理系统 【免费下载链接】senaite.lims SENAITE Meta Package 项目地址: https://gitcode.com/gh_mirrors/se/senaite.lims SENAITE LIMS是一个开源的实验室信息管理系统,专门为各类实验室提供全面的样品…

张小明 2025/12/30 8:16:44 网站建设

wordpress仿站模板制作教程宁波seo推广推荐

AI Agent是具备自主决策能力的智能系统,经历了从传统聊天机器人到LLM驱动,再到RAG系统的进化。其核心组件包括感知模块、推理引擎、执行机构、知识库和学习系统,正在改变智能驾驶、精准医疗等领域。尽管面临伦理困境和数据依赖等挑战&#xf…

张小明 2026/1/2 12:23:43 网站建设