linux线程同步与互斥_shell脚本多线程并发

linux线程同步与互斥_shell脚本多线程并发Linux下共享内存同步方法同步(synchronization)指的是多个任务(线程)按照约定的顺序相互配合完成一件事情。由于多个进程共享一段内存,因此也需要依靠某种同步机制,如互斥锁和信号量等 。信号量(semaphore

Linux下共享内存同步方法   同步(synchronization)指的是多个任务(线程)按照约定的顺序相互配合完成一件事情。由于多   个进程共享一段内存,因此也需要依靠某种同步机制,如互斥锁和信号量等 。   信号量(semaphore),它是不同进程间或一个给定进程内部不同线程间同步的机制。信号量包   括:posix有名信号量、 posix基于内存的信号量(无名信号量) 和 System V信号量(IPC对象)。【文章福利】小编推荐自己的Linux内核源码交流群:【】整理了一些个人觉得比较好的Linux相关学习书籍、Linux内核视频资料共享在群里面,有需要的可以自行添加哦!!!前50名可进群领取,并额外赠送一份价值600的内核资料包(含视频教程、电子书、实战项目及代码)!
linux线程同步与互斥_shell脚本多线程并发
linux线程同步与互斥_shell脚本多线程并发Linux内核课程示例   学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈   方法一:利用POSIX有名信号量实现共享内存的同步   有名信号量既可用于线程间的同步,又可用于进程间的同步。   两个进程,对同一个共享内存读写,可利用有名信号量来进行同步。一个进程写,另一个进   程读,利用两个有名信号量“semr”, “semw”。semr信号量控制能否读,初始化为0。 semw信号量   控制能否写,初始为1。   “semr”加1后才会继续运行。而写程序,由于刚开始的写信号量初始化为1,此时写信号量“semw”   在执行“sem_wait”后会减1。因此会直接执行写操作后,给读信号量“semr”加1,出发读程序继续往   下进行。   读共享内存的程序示例代码如下:   写共享内存的程序示例代码如下:   方法二:利用POSIX无名信号量实现共享内存的同步   POSIX无名信号量是基于内存的信号量,可以用于线程间同步也可以用于进程间同步。若实   现进程间同步,需要在共享内存中来创建无名信号量。因此,共享内存需要定义以下的结构体。   即在互相访问共享内存中数据的时候,查询信号量的状态来进行同步。这种方法并不太方便   ,使用方式与下面介绍的利用互斥锁的机制差不多。   读、写程序流程如下图所示:
linux线程同步与互斥_shell脚本多线程并发
linux线程同步与互斥_shell脚本多线程并发   方法三:利用System V的信号灯实现共享内存的同步   System V的信号灯是一个或者多个信号灯的一个集合。其中的每一个都是单独的计数信号   灯。而Posix信号灯指的是单个计数信号灯。   System V 信号灯由内核维护,主要函数semget,semop,semctl 。   一个进程写,另一个进程读,信号灯集中有两个信号灯,下标0代表能否读,初始化为0。 下   标1代表能否写,初始为1。   程序流程如下:
linux线程同步与互斥_shell脚本多线程并发
linux线程同步与互斥_shell脚本多线程并发   方法四:利用信号实现共享内存的同步   思路:   reader和writer通过信号通信必须对方的进程号,可利用共享内存保存双方的进程号。reader和writer运行的顺序不确定,可约定先运行的进程创建共享内存并初始化。   利用pause, kill, signal等函数可以实现该程序(流程和前边类似)。   方法五:利用互斥锁实现共享内存的同步   这种方法与方法二差不多,需要在访问共享内存中数据的时候,查询互斥锁的状态来进行同步。   sm_common.h文件   sm_server.c文件   sm_client.c文件   使用方法:打开终端1,运行服务端:https://zhuanlan.zhihu.com/p/sm_server打开终端2,运行客户端:https://zhuanlan.zhihu.com/p/sm_client在终端2输入字符串,在终端1可看到相应输出   精彩推荐:   好家伙!原来Linux内核中的硬中断就是这样的!   剖析块设备中的request层   浅谈块设备层——BIO层   Linux虚拟化KVM-Qemu分析——ioeventfd与irqfd   分析Linux内核对象——kobject和sysfs2022秋招提前批就业指导课|大厂面试|简历梳理|offer选择|技术方向指导_哔哩哔哩_bilibili   内核技术中文网 – 构建全国最权威的内核技术交流分享论坛   原文参考:Linux下共享内存同步方法   (版权归原作者所有,侵删)
linux线程同步与互斥_shell脚本多线程并发
linux线程同步与互斥_shell脚本多线程并发

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/55067.html

(0)
上一篇 2024年 9月 1日 上午11:47
下一篇 2024年 9月 1日 上午11:53

相关推荐

关注微信