进/线程间同步 通讯的方法

linux进程通讯的方法:

 

管道/FIFO/共享内存/消息队列/信号/

 

以上几种方式的比较:    
1.管道:速度慢,容量有限,只有父子进程能通讯。 常见的单向进程间通信机制,发送信息的为发送进程,接受信息的为接受进程。管道通信的中间介质为文件,这样的文件为管道文件   
2.FIFO:任何进程间都能通讯,但速度慢    
3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题 。 消息队列的中间介质是消息缓冲区,消息队列最大的缺点是需要不断的复制消息。
--------4.信号量:不能传递复杂消息,只能用来同步    
5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存。 该方法需要有外部通信协议、同步或者互斥机制来进行配合使用才能保证通信的有效性和正确性。
Windwos进程间同步方法:
互斥量、信号量、事件、可等计时器等几种技术
线程间同步的方法:
互斥量、信号量、事件,临界区(critical section),
临界区(critical section),保证在某一时刻只有一个线程能访问数据的简便办法。 使用临界区域的第一个忠告就是不要长时间锁住一份资源。临界区域的一个缺点就是:Critical Section不是一个核心对象,无法获知进入临界区的线程是生是死,如果进入临界区的线程挂了,没有释放临界资源,系统无法获知,而且没有办法释放该临界资源。使用临界区域的第一个忠告就是不要长时间锁住一份资源。
用事件来同步线程是最具弹性的,一个事件有激发态和非激发态。事件又分两种类型:手动重置事件和自动重置事件。一般使用自动重置事件来进行线程的同步。事件对象也可以通过通知操作的方式来保持线程的同步。并且可以实现不同进程中的线程同步操作。
互斥量和临界区很相似,但是Mutex花费的时间比Critical section大。互斥量跟临界区很相似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。互斥量比临界区复杂。因为使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享
信号量允许多个线程同时使用共享资源,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。
Mutex是核心对象,系统级的, Event、Semaphore也是,可以跨进程使用。 只有Critical section是进程级的,也就是说他可能利用进程内的一些标志来保证该进程内的线程同步。
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随与我联系,我会及为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随与我联系,我会及解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还[基于Python]自己写的一个微信跳一跳自动游戏程序(针对安卓手机)。 全自动运行 自动适应不同分辨率 自动调整各个参数误差.zip行,也可在此程序基础上行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值