首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
进程及线程间通信方式总结
时间:
2015-03-15 09:31:35
阅读:
265
评论:
0
收藏:
0
[点我收藏+]
标签:
进程间通信方式
传递数据的方式
1.pipe
必须是有亲缘关系的进程之间使用,平时用"ls | grep abc"等命令时用得就是这个,这个"|"我猜测是用了两种系统调用实现,一个是pipe(popen),一个是dup2,没有看过bash或sh的源码,只是猜测。
2.fifo
会在文件系统中产生一个管道文件。
3.socket
有一个unix域套接字,可用作进程间通信,但有说法posix消息队列的性能优于systemv消息队列,systemv消息队列性能优于unix域套接字。
4.posix 消息队列
写程序该选到systemv消息队列的时候,大部分可以用posix消息队列代替,因为他的性能更好。
5.systemv 消息队列
gcc下不用链接库就可以使用,posix的线程和消息队列分别需要链接pthread库和rt库
6.systemv 共享内存
传递数据方式更灵活。
同步方式
1.信号
2.systemv 信号量
不同于pthread信号量,它需要一个key,以在不同进程间标识每个信号量资源。
线程间通信方式
传递数据的可用方式
1.全局变量
2.堆内存
3.任何进程间可用的传递数据方式
同步方式
1.pthread 互斥锁
有自旋锁、读写锁、互斥锁三种类型
2.pthread 条件变量
与互斥锁一块可完成一个生产者与消费者的模型
3.pthread 信号量
可单独实现一个生产者和消费者的模型
4.任何进程间可用的同步方式
1、参考资料:精通Linux C编程 (虽然名子很山寨,但觉得这本书写得很全,作为资料查阅感觉许多时候,比APUE都强。网上也有人说这本书有很多错误,至少目前还没有见过一个我确定是错误的地方)
2、关于一个全局的int变量读写是不是需要加锁的问题。见过很多帖子讨论这个问题,但没有见过一个能信服的答案。自己用起来在一些比较简单的情况下x没有加锁,比如只有两个线程共用一个变量,一个线程只读,另一个线程只写。有人说,容易引起core dump,但至少我还没有见过这种情况。
3、写得不是很专业,很多地方没有经过特别多的求证,仅供参考。
进程及线程间通信方式总结
标签:
原文地址:http://blog.csdn.net/langsim/article/details/44264483
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!