家居企业网站建设资讯做 ps pr 赚钱的 网站

web/2025/10/3 10:48:24/文章来源:
家居企业网站建设资讯,做 ps pr 赚钱的 网站,播放我的观看历史记录,大连软件公司有哪些文章目录 前言一、线程同步二、互斥量 mutex三、死锁总结 前言 一、线程同步 在多线程环境下#xff0c;多个线程可以并发地执行#xff0c;访问共享资源#xff08;如内存变量、文件、网络连接 等#xff09;。 这可能导致 数据不一致性, 死锁, 竞争条件等 问题。 为了解… 文章目录 前言一、线程同步二、互斥量 mutex三、死锁总结 前言 一、线程同步 在多线程环境下多个线程可以并发地执行访问共享资源如内存变量、文件、网络连接 等。 这可能导致 数据不一致性, 死锁, 竞争条件等 问题。 为了解决这些问题需要使用同步机制来确保线程间的协作和互斥访问共享资源。“同步” 的目的 是为了避免数据的混乱解决与时间有关的错误。实际上不仅线程需要同步进程间信号间等等都需要同步机制。 线程同步指一个线程发出某一功能调用时在没有得到结果之前该调用不返回。同时 其他线程为保证数据的一致性不能调用该功能。 二、互斥量 mutex 互斥锁Mutex全称为 Mutual Exclusion是一种常用的同步机制用于保护共享资源免受多个线程同时访问和修改的影响。互斥锁提供了一种互斥访问的机制同一时间只允许一个线程获取锁并访问被保护的资源。 每个线程在对资源操作前都尝试进行先加锁成功加锁才能操作操作结束解锁。 资源还是共享的线程也还是竞争的。 但 通过 “锁” 就将资源的访问变成互斥操作而后与时间有关的错误也就不会再产生了。 1. 互斥锁的基本操作包括两个关键操作 加锁Lock线程通过申请互斥锁来获取对共享资源的访问权。如果互斥锁当前未被其他线程获取线程成功获得锁然后进入临界区Critical Section可以访问共享资源。如果互斥锁已经被其他线程获取申请锁的线程将被阻塞直到锁被释放。 解锁Unlock线程在完成对共享资源的访问之后释放互斥锁使得其他线程可以申请并获取锁。 2. 互斥锁的主要应用函数 : pthread_mutex_init: 用于初始化互斥锁变量。 pthread_mutex_destroy: 用于销毁互斥锁对象。 pthread_mutex_lock: 用于加锁如果互斥锁已被其他线程占用则当前线程阻塞。 pthread_mutex_trylock: 尝试加锁如果互斥锁已被其他线程占用则返回一个失败状态而不阻塞线程。 pthread_mutex_unlock: 用于解锁释放互斥锁使其他线程可以获取。 3. 初始化线程锁 : 有两种方式可以对互斥锁进行初始化静态初始化和动态初始化。 静态初始化 是在定义互斥锁变量时直接进行初始化不需要调用特定的初始化函数。 pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; PTHREAD_MUTEX_INITIALIZER 是一个宏用于静态初始化互斥锁变量。动态初始化动态初始化是在运行时使用初始化函数对互斥锁进行初始化。 pthread_mutex_init(mutex, NULL); 4. 示例代码 在下面代码中main 函数中有一个主线程 打印小写字母my_thread 为 子线程 打印 大写字母。两个线程通过互斥锁来访问 共享资源。 #include stdio.h #include pthread.h #include errno.h #include stdlib.h #include unistd.h #include time.hpthread_mutex_t lock; // 创建 互斥锁void *my_thread(void *arg) {srand(time(NULL)); // 设置随机种子while(1){pthread_mutex_lock(lock);printf(ABC );sleep(rand() % 3);printf(XYZ\n);pthread_mutex_unlock(lock);sleep(rand() % 3); // 休眠随机秒释放cpu资源}pthread_exit(NULL); }int main(void) {pthread_t tid;int ret;srand(time(NULL)); // 设置随机种子ret pthread_mutex_init(lock, NULL); // 初始化互斥锁if(ret ! 0){printf(pthread_mutex_init err\n);}ret pthread_create(tid, NULL, my_thread, NULL);if(ret ! 0){printf(pthread_create err\n);}while(1){pthread_mutex_lock(lock);printf(abc );sleep(rand() % 3);printf(xyz\n);pthread_mutex_unlock(lock);sleep(rand() % 3);}pthread_mutex_destroy(lock); // 销毁 互斥锁pthread_join(tid,NULL); // 等待回收线程获取回收状态return 0; }注意 锁粒度Lock Granularity锁的粒度应该尽可能小以避免锁定过长时间从而降低了并发性能。 三、死锁 死锁产生的原因死锁是指多个线程或进程因为彼此相互等待对方所持有的资源而无法继续执行的状态。 解决 使用资源的有序性通过规定线程获取资源的顺序避免出现循环等待的情况。例如可以约定所有线程按照一定的顺序获取资源从而避免死锁的发生。 如果下面两个线程 获取资源的顺序是相反的则可能会产生死锁。可以将 线程 B 先获取 m1锁再获取 m2锁。 以下面代码的方式获取锁不会存在死锁风险。 #include stdio.h #include pthread.h #include errno.h #include stdlib.h #include unistd.hpthread_mutex_t lock1 PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t lock2 PTHREAD_MUTEX_INITIALIZER;void *my_thread1(void *arg) {pthread_mutex_lock(lock1);printf(my_thread1 : begin\n);pthread_mutex_lock(lock2);printf(my_thread1 : end\n);pthread_mutex_unlock(lock2);pthread_mutex_unlock(lock1);pthread_exit(NULL); }void *my_thread2(void *arg) {pthread_mutex_lock(lock1);printf(my_thread2 : begin\n);pthread_mutex_lock(lock2);printf(my_thread2 : end\n);pthread_mutex_unlock(lock2);pthread_mutex_unlock(lock1);pthread_exit(NULL); }int main(void) {pthread_t tid1,tid2;int ret;ret pthread_create(tid1, NULL, my_thread1, NULL);if(ret ! 0){printf(pthread1_create err\n);}ret pthread_create(tid2, NULL, my_thread2, NULL);if(ret ! 0){printf(pthread2_create err\n);}pthread_join(tid1,NULL);pthread_join(tid2,NULL);return 0; }设置超时机制在请求资源时设置一个超时时间在超过该时间后如果仍未获得资源则放弃等待释放已经获取的资源避免长时间的死锁等待。 总结

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

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

相关文章

做外贸公司 网站wordpress模板定做

镜像官网 操作系统基础镜像 busybox Alpine CentOS Ubuntu Debian 编程语言基础镜像 Java基础镜像 Python基础镜像 NodeJs基础镜像 应用基础镜像 Nginx基础镜像 Tomcat基础镜像 Jetty基础镜像 其它基础镜像例子 Maven基础镜像 Jenkins基础镜像 GitLab基础镜像 如何选择Docker基…

汽车网站建设公司哪家好百度网站建设公司

全世界只有3.14 % 的人关注了爆炸吧知识来看越南学生拍摄的一组图,主题是老师和文具“撞衫”!老师你和我的胶水撞了!老师你和我的笔袋撞了!老师你和我的手机壳撞了!这个铅笔和老师好像啊书皮和老师很像老师今天穿得像面…

资源库建设网站微信平台制作网站开发

【JavaEE】进阶 个人博客系统(4) 文章目录 【JavaEE】进阶 个人博客系统(4)1. 增加博文1.1 预期效果1.1 约定前后端交互接口1.2 后端代码1.3 前端代码1.4 测试 2. 我的博客列表页2.1 期待效果2.2 显示用户信息以及博客信息2.2.1…

旅游网站建设案例分析北京个人制作网站有哪些

本文深入研究Vuex,一个Vue.js状态管理库。我们将介绍创建它是为了解决的问题、其背后的核心概念、如何设置它,当然,还将在每一步中使用代码示例。 Vuex是一个由Vue团队构建的状态管理库,用于管理Vue.js应用程序中的数据。它提供了一种集中管理跨应用程序使用的数据的方式,…

没有数据库的网站深圳市建设交易宝安

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用,人工智能…

优秀的html5网站做区块链在哪个网站

目录 总体流程介绍 1. 从 Kafka 读取数据 2. 使用 UDF 进行数据解析 3. 将

网站设计公司网站设计公司网站经营性备案难不难

目录 📝认识文件 🚩树型结构组织 和 目录 🎈绝对路径和相对路径 🚩文件类型 📝文件系统操作 🎈File 概述 🎈File类的使用 1. 绝对路径 vs 相对路径 2. 路径分隔符 3. 静态成员变量 4…

网站搭建平台选哪个便宜网站建设哪家好

一直有一个做机器人的梦,所以从去年起放弃了十多年的软件开发,开始进入嵌入式领域,先后在.Net Micro Framework 项目中完成了Ti DM335上的GPIO、I2C、USB等驱动,方浅浅地了解了什么叫嵌入式开发。 对非软件也非硬件出身的我&#…

刷赞网站怎么做的外贸网络推广招聘

---恢复内容开始--- 之前在写项目的时候,发现原本想让父子元素之间加点边距,却让父元素产生了margin-top,于是百度之后发现了原因。 在css2.1盒模型中 In this specification, the expression collapsing margins means that adjoining ma…

如何选择企业建站公司jsp网站建设美食

当然,理解纯CSS选择器(CSS Selectors)对于进行UI自动化测试非常重要。CSS选择器允许您通过元素的属性、层级关系、类名、ID等来精准定位页面上的元素。下面我将详细讲解CSS选择器的常见用法,并结合您的需求提供具体的示例。 1. 基…

做h5动画的素材网站h5海报是什么意思

LOL手游国际服已经于10月27日开服(苹果为10月28日开服),LOL手游官方为大家准备了开服活动。各位玩家可以通过参与活动获得免费皮肤。为了迎接新玩家的到来,LOL手游官方推出了新手活动《WILDRIFTACADEMY》,玩家需要用五天时间完成该活动&#…

制作网站软件免费网站建设是什么意思

Java的方法类似于其他语言如C中的函数,比如我们第一个Java程序 输出Hello,world!中用到一个方法System.out.printfln();这里的printfln()就是一个方法,System是系统类,out是对象。1.什么是方法?方法是语句…

网站后台视频教程wordpress导航自定义

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

购买一个域名能建几个网站室内设计3d效果图用什么软件

Vue3【十二】09Computed计算属性 计算属性 获取全名 这种方式是只读的不能修改 这样定义fullName是一个计算属性&#xff0c;可读可写 案例截图 目录结构 代码 Person.vue <template><div class"person"><h1>我是 Person 组件</h1>姓&…

做网站有哪些苏州网站设计选哪家

在第2章节中&#xff0c;我们介绍了如何通过Spring Boot来实现HTTP接口&#xff0c;以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是&#xff0c;这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点&#xff0c;…

石家庄站列车时刻表手机上怎么设计logo

在PyTorch中&#xff0c;state_dict是一个非常重要的概念&#xff0c;它是一个包含模型参数的字典对象。每个模型的state_dict都包含了该模型的所有参数&#xff08;权重和偏置等&#xff09;&#xff0c;用于在训练和推理过程中重现模型的内部状态. pytorch 中的 state_dict 是…

企业网站美化牛商网网站做seo好么

软件工程文档 文档是软件开发使用和维护当中必备的资料&#xff0c;文档主要是管理人员、开发人员、操作人员、用户人员之间进行协商沟通的桥梁。 1.可行性分析文档 主要是说明软件在经济上&#xff0c;技术上和市场情景等方面的可行性。根据这个文档&#xff0c;公司判断软件能…

phpnow 新建网站枣强网站建设

连续写了两篇文章&#xff0c;这一篇我想是序的完结篇了。结合用户注册的例子再将他简单丰富一下。在这里只添加一个简单需求&#xff0c;就是用户注册成功后给用户发一封邮件。补充一下之前的代码 public class DomainService {public void Register(User user){if (_userRepo…

个人网站wordpress新闻头条最新消息今天发布

在php中&#xff0c;如何判断[1,0,1]和[ [0, 0, 0],//体质正常 [1, 0, 0],//气虚体质 [0, 1, 0],//血瘀体质 [0, 0, 1],//阴虚体质 [1, 1, 0],//气虚兼血瘀体质 [1, 0, 1],//气虚兼阴虚体质 [0, 1, 1],//血瘀兼阴虚体质 [1, 1, 1],//气虚兼血瘀兼阴虚体质 ];中的第n项相等&…

自己做网站新手入门阿里巴巴外贸网站首页

maven常见问题问答 收藏转载于:https://www.cnblogs.com/shl-2012/p/3530548.html