在百度建免费网站吗网站建设项

张小明 2026/1/10 18:36:43
在百度建免费网站吗,网站建设项,Wordpress导航标签icon,html5移动端手机网站开发流程一、前言前面我们学习了线程的一些基础知识#xff0c;学习了线程的创建与使用#xff0c;今天我们来学习线程的分离与同步。二、线程分离2.1、函数原型函数原型如下#xff1a;#include pthread.h int pthread_detach(pthread_t thread);参数#xff1a;thread学习了线程的创建与使用今天我们来学习线程的分离与同步。二、线程分离2.1、函数原型函数原型如下#include pthread.h int pthread_detach(pthread_t thread);参数thread设置为分离态的线程 ID用户态 TID由 pthread_create() 返回的 ID。返回值成功返回0失败返回对应的错误码。2.2、工作原理pthread_detach()本质是修改线程的分离状态属性通知内核该线程终止时无需保留资源等待pthread_join()自动回收资源具体执行流程如下1、用户态方面pthread库修改该线程对应的属性结构体pthread_attr_t中detachstate字段为PTHREAD_CREATE_DETACHED2、内核态层面 库通过系统调用通知内核标记该线程的 task_struct任务结构体为 “分离态”3、线程终止时内核检测到分离态标记会立即清理线程的栈、寄存器、TID 等资源无需主线程干预。注分离操作不影响线程的执行仅改变线程终止后的资源回收规则。2.3、典型示例1、先创建再detach先创建一个pthread_detach.c文件然后输入以下代码#include stdio.h #include pthread.h #include unistd.h #include string.h void *myfun(void *arg) { printf(child pthread id is %ld\n,pthread_self()); for(int i0;i5;i) { printf(children i %d\n,i); sleep(1); } return NULL;//子线程结束自动回收资源并退出 } int main() { pthread_t pthid; int ret; ret pthread_create(pthid,NULL,myfun,NULL);//线程创建 pthread_detach(pthid);//线程分离 if(ret ! 0) { printf(error number is %d\n,ret); printf(%s\n,strerror(ret)); } printf(parent pthread id is %ld\n,pthread_self()); for(int i0;i5;i) { printf(parent i %d\n,i); sleep(1); } sleep(2);//休眠2s防止主线程快速退出导致进程退出 return 0; }使用gcc编译器进行编译运行结果如下可以看到主线程并不会等待子进程子进程在后台跑子线程自动释放资源这就是线程分离的目的。2、创建时直接设置为分离态有时不想手动设置分离态可以让线程创建时直接分离具体代码如下#include stdio.h #include pthread.h #include unistd.h #include string.h void *myfun(void *arg) { printf(child pthread id is %ld\n,pthread_self()); for(int i0;i5;i) { printf(children i %d\n,i); sleep(1); } return 0; } int main() { pthread_t pthid; pthread_attr_t attr; //init pthread_attr_init(attr);//初始化线程属性对象 //set pthread_attr_setdetachstate(attr,PTHREAD_CREATE_DETACHED);//设置线程为分离态 //set2 int ret; ret pthread_create(pthid,attr,myfun,NULL);//创建线程并使其天生就是分离状态 pthread_detach(pthid); if(ret ! 0) { printf(error number is %d\n,ret); printf(%s\n,strerror(ret)); } printf(parent pthread id is %ld\n,pthread_self()); for(int i0;i5;i) { printf(parent i %d\n,i); sleep(1); } sleep(2); //kill attr pthread_attr_destory(attr);//销毁属性对象不影响已经创建的线程 return 0; }使用gcc编译器进行编译运行结果如下运行结果与第一种方法一样但是这是创建时直接分离避免了线程创建失败而导致后续分离操作无效的情况。2.4、注意事项1、分离状态不可逆线程一旦通过 pthread_detach 设为分离态无法再改回joinable状态。如果后续试图调用 pthread_join会直接返回 EINVAL 错误。2、调用时机越早越好避免线程提前终止若主线程创建子线程后还没来得及调用 pthread_detach子线程就已经终止此时调用 pthread_detach 会返回 ESRCH找不到线程3、不能对已终止的线程调用pthread_detach线程终止后其 TID 可能被内核复用分配给新创建的线程此时调用 pthread_detach 可能误操作新线程导致不可预期的问题。4、分离线程崩溃仍会导致进程终止pthread_detach 仅改变资源回收方式不改变线程与进程的资源共享关系如果分离线程触发段错误、除零等异常仍会发送信号终止整个进程。5、主线程提前退出仍会杀死分离线程分离线程只是 “终止后自动回收资源”但如果主线程直接return/exit导致进程终止所有分离线程仍会被强制杀死需主线程 pthread_exit或延时等待。6、不能同时调用 pthread_join 和 pthread_detach若先调用 pthread_join阻塞等待线程此时再调用 pthread_detach 会返回 EINVAL若先调用 pthread_detach 分离线程再调用 pthread_join也会返回 EINVAL7、主线程无需分离无意义主线程的 TID 等于进程 PID分离主线程不会改变 “主线程退出导致进程终止” 的规则因此对主线程调用 pthread_detach无实际意义还可能返回 EINVAL 错误。2.5、两种创建方法对比二者对比如下特性pthread_detach()动态分离pthread_attr_setdetachstate()静态创建调用时机线程创建后任意时间需线程未终止线程创建前初始化属性时灵活性高运行时决定是否分离低创建前确定无法动态调整代码复杂度低无需初始化属性结构体高需初始化 / 销毁属性结构体风险可能因线程提前终止导致调用失败无此风险创建时直接设为分离态适用场景运行时才确定是否分离的场景提前确定无需等待的后台线程
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

温州网站建设费用淘宝网站开发的意义

Android位置隐藏完整教程:HideMockLocation深度解析与实战指南 【免费下载链接】HideMockLocation Xposed module to hide the mock location setting. 项目地址: https://gitcode.com/gh_mirrors/hi/HideMockLocation 在当今移动应用生态中,位置…

张小明 2025/12/31 23:02:03 网站建设

临海网站制作返利网网站框架目录

如何用Stream-rec实现24小时无人值守直播录制?全自动方案深度解析 【免费下载链接】stream-rec Automatic streaming record tool powered by FFmpeg. 虎牙/抖音/斗鱼/Twitch/PandaTV直播,弹幕自动录制 项目地址: https://gitcode.com/gh_mirrors/st/s…

张小明 2025/12/31 18:22:35 网站建设

怎样在中国建设银行网站开通短信提醒橫山区建设局网站

第一章:Open-AutoGLM插件的核心功能解析Open-AutoGLM是一款专为大语言模型自动化任务设计的轻量级插件,旨在提升自然语言处理流水线的智能化水平。该插件通过深度集成GLM系列模型的能力,实现从文本理解到自动决策的闭环流程。智能上下文感知 …

张小明 2025/12/31 23:28:41 网站建设

网站建设介绍怎么写要综合考虑哪些因素?

一、CD8α分子在T细胞稳态维持中扮演何种角色?CD8α作为T细胞表面重要的共受体分子,其功能远超出传统的MHC I类分子识别辅助作用。通过条件性基因敲除模型研究显示,CD8α缺失会直接导致外周淋巴系统中记忆性和幼稚CD8T细胞数量的显著减少。在…

张小明 2026/1/2 3:55:10 网站建设

河北定制网站建设调试wordpress用户同步

FaceFusion镜像自动更新机制上线:保持最新状态 在AI内容创作工具快速迭代的今天,一个让人头疼的问题始终存在:你正全神贯注地处理一段关键视频的人脸替换任务,突然发现当前使用的FaceFusion版本缺少某个新特性——比如刚刚发布的…

张小明 2026/1/9 14:07:10 网站建设

佛山企业网站设计制作asp.net网站开发与应用

厌倦了网盘限速的烦恼吗?这款免费开源的网盘下载助手将彻底改变你的文件下载体验。通过巧妙解析网盘API接口,它能够获取百度网盘、阿里云盘等六大主流平台的真实下载地址,让你配合专业下载工具实现免客户端高速下载。 【免费下载链接】baiduy…

张小明 2026/1/1 23:04:14 网站建设