万州网站制作凡科建站怎样建站中站

news/2025/9/22 16:17:40/文章来源:
万州网站制作,凡科建站怎样建站中站,做外贸网站公司哪家好,智慧团建学生登录入口手机版#xff08;1#xff09;线程属性 Linux下线程的属性是可以根据实际项目需要#xff0c;进行设置#xff0c;之前我们讨论的线程都是采用线程的默认属性#xff0c;默认属性已经可以解决绝大多数开发时遇到的问题。如我们对程序的性能提出更高的要求那么需要设置线程属性…1线程属性 Linux下线程的属性是可以根据实际项目需要进行设置之前我们讨论的线程都是采用线程的默认属性默认属性已经可以解决绝大多数开发时遇到的问题。如我们对程序的性能提出更高的要求那么需要设置线程属性比如可以通过设置线程栈的大小来降低内存的使用增加最大线程个数。 typedef struct { int                              detachstate; //线程的分离状态 int                               schedpolicy;   //线程调度策略 struct sched_param     schedparam;   //线程的调度参数 int                               inheritsched; //线程的继承性 int                               scope;            //线程的作用域 size_t                          guardsize;     //线程栈末尾的警戒缓冲区大小 int                               stackaddr_set; //线程的栈设置 void*                          stackaddr;      //线程栈的位置 size_t                          stacksize;      //线程栈的大小  } pthread_attr_t;     //加粗的三个成员常用到 ulimit –a命令可以查看进程的属性可以看到默认栈大小为8MB8192KB。默认时多个线程的线程栈是均分这个8M空间如果2个线程则各为4M。当线程数量太多时8M不够用可以从堆空间heap上申请一段内存malloc然后把这段内存指定到线程栈里面从而修改了线程栈的大小。当然也可以修改进程进程栈空间的大小使用ulimit命令 两个线程栈空间之间的空隙称为警戒区guardsize线程栈空间都相互独立不连续其作用是为了防止线程溢出。可以在线程属性中设置这个警戒区的大小。关于具体的设置方法参考APUE.12.3 线程属性。 主要结构体成员1. 线程分离状态detachstate2. 线程栈大小stacksize默认平均分配3. 线程栈警戒缓冲区大小guardsize位于栈末尾。 属性值不能直接设置须使用相关函数进行操作初始化的函数为pthread_attr_init这个函数必须在pthread_create函数之前调用。之后须用pthread_attr_destroy函数来释放资源。 线程属性主要包括如下属性作用域scope、栈尺寸stack size、栈地址stack address、优先级priority、分离的状态detached state、调度策略和参数scheduling policy and parameters。默认的属性为非绑定、非分离、缺省的堆栈、与父进程同样级别的优先级。 2线程属性初始化和线程属性的释放 注意应先初始化线程属性再pthread_create创建线程 初始化线程属性 int pthread_attr_init(pthread_attr_t *attr);   成功0失败错误号 销毁线程属性所占用的资源 int pthread_attr_destroy(pthread_attr_t *attr);  成功0失败错误号 3线程的分离状态 线程的分离状态决定一个线程以什么样的方式来终止自己。 非分离状态PTHREAD _CREATE_JOINABLE线程的默认属性是非分离状态这种情况下原有的线程等待创建的线程结束。只有当pthread_join()函数返回时创建的线程才算终止才能释放自己占用的系统资源。 分离状态PTHREAD_CREATE_DETACHED分离线程没有被其他的线程所等待自己运行结束了线程也就终止了马上释放系统资源。应该根据自己的需要选择适当的分离状态。 线程分离状态的函数 int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate); 作用设置线程属性分离or非分离   成功0失败错误号 int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate); 作用获取程属性分离or非分离    成功0失败错误号 注意参数attr必须为已初始化的线程属性 detachstatePTHREAD_CREATE_DETACHED分离线程、PTHREAD _CREATE_JOINABLE非分离线程。 这里要注意的一点是如果设置一个线程为分离线程而这个线程运行又非常快它很可能在pthread_create函数返回之前就终止了它终止以后就可能将线程号和系统资源移交给其他的线程使用这样调用pthread_create的线程就得到了错误的线程号。要避免这种情况可以采取一定的同步措施最简单的方法之一是可以在被创建的线程里调用pthread_cond_timedwait函数让这个线程等待一会儿留出足够的时间让函数pthread_create返回。设置一段等待时间是在多线程编程里常用的方法。但是注意不要使用诸如wait()之类的函数它们是使整个进程睡眠并不能解决线程同步的问题。 4线程的栈地址 POSIX.1定义了两个常量_POSIX_THREAD_ATTR_STACKADDR 和_POSIX_THREAD_ATTR_STACKSIZE检测系统是否支持栈属性。也可以给sysconf函数传递_SC_THREAD_ATTR_STACKADDR或 _SC_THREAD_ATTR_STACKSIZE来进行检测。 当进程栈地址空间不够用时指定新建线程使用由malloc分配的空间作为自己的栈空间。通过pthread_attr_setstack和pthread_attr_getstack两个函数分别设置和获取线程的栈地址。 int pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, size_t stacksize); 成功0失败错误号 int pthread_attr_getstack(pthread_attr_t *attr, void **stackaddr, size_t *stacksize); 成功0失败错误号 参数 attr指向一个线程属性的指针  stackaddr返回获取的栈地址  stacksize返回获取的栈大小 5线程的栈大小 当系统中有很多线程时可能需要减小每个线程栈的默认大小防止进程的地址空间不够用当线程调用的函数会分配很大的局部变量或者函数调用层次很深时可能需要增大线程栈的默认大小。 函数pthread_attr_getstacksize和 pthread_attr_setstacksize提供设置。 int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize); 成功0失败错误号 int pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize); 成功0失败错误号 参数attr指向一个线程属性的指针     stacksize返回线程的堆栈大小 //测试一个进程中最多能够创建的线程数量 #include unistd.h #include stdio.h #include string.h #include stdlib.h #include pthread.hvoid *tfn(void *arg) {while (1)sleep(1); }int main(void) {pthread_t tid;int ret, count 1;for (;;) {ret pthread_create(tid, NULL, tfn, NULL);if (ret ! 0) {printf(pthread_create error: %s\n, strerror(ret));break;}printf(---------%d\n, count);}return 0; } //线程属性控制示例 #include stdio.h #include pthread.h #include string.h #include stdlib.h #include unistd.h#define SIZE 0x100000void *th_fun(void *arg) {while (1)sleep(1);free(arg); //线程结束之前释放malloc分配的堆空间argNULL; }int main(void) {pthread_t tid;int err, detachstate, n 10;pthread_attr_t attr;size_t stacksize, stacksize1; //typedef size_t unsigned int void *stackaddr;pthread_attr_init(attr); //初始化线程属性pthread_attr_getstack(attr, stackaddr, stacksize); //默认属性栈空间pthread_attr_getdetachstate(attr, detachstate); //默认属性栈状态pthread_attr_getstacksize(attr, stacksize1); //默认属性栈空间printf(The default stackaddr is %#x, and the stacksize is %d.\n,stackaddr,stacksize);printf(The default stacksize is %d.\n,stacksize1);printf(The default detachstate is %d.\n,detachstate);if (detachstate PTHREAD_CREATE_DETACHED) //默认是分离态printf(thread detached\n);else if (detachstate PTHREAD_CREATE_JOINABLE) //默认时非分离printf(thread join\n);elseprintf(thread un known\n);/* 设置线程分离属性 */pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED);while (n--) {/* 在堆上申请内存,指定线程栈的起始地址和大小 */stackaddr (void *)malloc(SIZE);if (stackaddr NULL) {perror(malloc);exit(1);}stacksize SIZE;pthread_attr_setstack(attr, stackaddr, stacksize); //借助线程的属性,修改线程栈空间大小err pthread_create(tid, attr, th_fun, stackaddr);if (err ! 0) {printf(pthread_create error: %s\n, strerror(err));exit(1);}}pthread_attr_destroy(attr);return 0; }[rootlocalhost 01_pthread_test]# ./pthrd_attr_change The default stackaddr is 0, and the stacksize is 0.  //默认未设置 The default stacksize is 8388608.  The default detachstate is 0.  //0代表非分离态 thread join

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站h5什么意思游戏平台网站开发

1024程序员节当当网计算机图书每满100减50!满200减100!满300-150!机械工业出版社华章公司联合当当网特意为【DotNET技术圈】用户申请了一批可与满减叠加使用的“满200减30”的图书优惠码,优惠码使用后相当于:400减230 …

哈尔滨智能建站模板什么网站可以找人做设计师

ps切片导出时将切片选项选择为“所有用户切片”,可导出所有切中的区域。转载于:https://www.cnblogs.com/npk19195global/p/4513707.html

网站备案证书放到哪里怎么建设电子商城网站

如果希望自己的代码更优雅、可维护性更高以及更简洁,往往离不开设计模式这一解决方案。 在JS设计模式中,最核心的思想:封装变化(将变与不变分离,确保变化的部分灵活,不变的部分稳定)。 那么来…

其他与其它的区别

“其他”与“其它”在现代汉语中基本可互换,但有细微区别,主要体现在使用习惯和规范上:✅ 规范区别(《现代汉语词典》第7版):词语规范用法举例其他 ✅ 泛指人或事物,更通用 其他人、其他事、其他问题其它 ✅ 仅…

网站后台 登录界面模板 远吗北京手机网站设计报价

指针基础知识:C语言学习笔记之指针(一)-CSDN博客 目录 字符指针 代码分析 指针数组 数组指针 函数指针 代码分析(出自《C陷阱和缺陷》) 函数指针数组 指向函数指针数组的指针 回调函数 qsort() 字符指针 一…

样板网站建设中英文网站

博主打算从0-1讲解下java基础教学,今天教学第十五篇:Java中Spring详解说明。 Spring 框架是一个广泛应用于 Java 开发的轻量级、全栈式的企业应用开发框架,它提供了众多功能强大的模块,用于简化企业级应用程序的开发。下面详细说…

珠海斗门建设局官方网站实时热点新闻事件

最近你们是否遇到注册亚马逊账号时一直遇到"内部错误"的情况?,这可能是由多种原因引起的。以下是一些可能有助于解决这个问题的步骤: 1、清除缓存和Cookie:有时浏览器缓存和Cookie中的问题可能导致网站错误。可以试试清…

外卖网站那家做的好做网站项目

远程控制软件非常之多,但小编自己用过的就那么3个:teamviewer:在家远程办公时基本上都靠它连回公司的电脑,速度快、稳定、不需要公网IP。vnc:要开启vpn才能连回公司的网络,速度够快。系统自带远程桌面&…

衡水提供网站制作公司哪家专业罗湖网站建设联系电话

作者:Wwww_来源:牛客网问简历上项目,看我用了GreenDao开源库,问为什么使用这个数据库Java:1. 抽象类和接口,问的很细而且比较灵活。还记得的有:接口中能不能有protected修饰的方法;能…

江苏省招标投标信息网福州seo推广优化

目录 前言 原理 SOME/IP 协议服务接口 SOME/IP-SD协议文档 1.概述 1

网站seo快速排名软件网络营销专业介绍

​ SSML 的语音服务实现基于万维网联合会的语音合成标记语言版本 1.0。 ​ 语音服务支持的元素可能与 W3C 标准不同。 每个 SSML 文档是使用 SSML 元素(或标记)创建的。 这些元素用于调整语音、风格、音节、韵律、音量等。 下面是 SSML 文档的基本结构…

网站站点网站开发立项

代码气味的定义 (来自维基百科): “程序源代码中任何可能表明存在更深层问题的症状。” 在Java中, 静态方法允许您在“类范围”内执行代码,而不是像成员方法这样的实例范围。 这意味着,它们依赖于类级别的变…

行业网站建设分析长春做网站多少钱

题目表示 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。 举例1: 2,4,5 总代价最小值为17 举例2: 4,1,1,4 总代…

一天一款实用的AI工具,第2期,AI摘要生成工具

本期介绍的是一款专业的AI摘要生成工具,帮你提取核心信息,助你提升阅读效率。现实问题 在信息过载的今天,有句话尤其令人共鸣: 好的摘要 = 高效传递的核心。 很多写作者、研究者或职场人都面临这样的困境: 花费大…

网站性能优化方案wordpress需要做哪些设置

本文概述PHP提供了各种功能来从文件读取数据。有多种功能允许你读取所有文件数据, 逐行读取数据以及逐字符读取数据。下面提供了可用的PHP文件读取功能。fread()fgets()fgetc()PHP读取文件-fread()PHP fread()函数用于读取文件的数据。它需要两个参数:文件资源和文件…

实用指南:数据库造神计划第十七天---索引(2)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

邀您参加丨云栖大会中企出海技术分论坛

【云栖大会中企出海技术分论坛专场】 🌍 全球布局,技术先行!中国企业全球化正当时 🌏 2025 年 9 月 25 日 上午 9:30-12:20 📍 阿里云云栖小镇 D2-2 馆丨“ 中企出海技术分论坛” 即将启幕! 面对全球市场机遇…

汉中专业做网站wordpress选项下拉

在了解过世界最大的PHP站点,Facebook的后台技术后,今天我们来了解一个百万级PHP站点的网站架构:Poppen.de。Poppen.de是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架构&#xff0…

h5案例排名轻松seo 网站推广

/任务 5 有三位老师,王老师,孙老师和小李老师, 王老师工龄最长(15年),孙老师工龄比王老师小3年, 小李老师工龄最短,是王老师和孙老师工龄和的二分之一 再除以2的余数正好是他的工龄,编写程序从控…

asp网站 攻击网站设计基本功能

当涉及到虾皮(Shopee)接口的时,我们需要注意的是虾皮提供了API供开发者使用以集成其平台功能。然而,由于API的具体细节、参数和认证机制可能会随时间变化,以下是一个简化的示例和步骤,用于说明如何与虾皮AP…