linux进程和线程之间通信方法和同步方法总结

本文总结了Linux中进程和线程之间的通信及同步方法,包括进程间的管道通信,线程间的文件句柄共享,以及信号量、互斥量、读-写锁和条件变量等同步机制。重点介绍了互斥量的使用及其API,以及读-写锁和条件变量的操作方法。
摘要由CSDN通过智能技术生成

进程和线程之间的通信方法

一:进程之间的通信方法

1.消息队列
2.共享内存

3.管道:分为匿名管道用在父子进程之间通信,命名管道用于父子进程或不相关进程之间通信;

参考:linux进程间通信-----管道总结实例

4.父子进程也可以通过文件描述符通信,共同打开同一个文件;

二:线程之间的通信方法

1.全局数据,全局变量,全局数据结构
2.创建线程的时候通过参数arg主线程传递数据给新线程 pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
新线程退出的时候通过void pthread_exit(void *retval);和int pthread_join(pthread_t thread, void **retval);向主线程传递信息;
见博客:多线程函数系列pthread_create(), pthread_join(), pthread_self(),pthread_exit(), pthread_detach()实例详解

3.文件句柄,多个线程共享文件

待续。。。这部分还要写。。。


进程和线程之间的同步方法

1:信号量

一般是0和1两个值,进去临界区减去1(P操作),离开临界区加上1(V操作);如果涉及到对多个资源进行控制,那么信号量的值设置为资源的数目;

2:互斥量

互斥量其实是信号量的一种;每当一个线程或进程访问临界区的时候就要先获取互斥量,离开临界区的时候释放互斥量;如果获取互斥量失败,则阻塞;所以互斥量使多个线程或进程对临界区的执行串行化;

见博客:linux程序多线程互斥锁的简单使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值