操作系统学习:通信与锁
进程间的通信方式
管道:
- 匿名管道:特殊文件只存在内存里,只能父子进程或者兄弟进程通信
- 命名管道:建立了一个设备文件,通过对文件读写进行通信
消息队列:
内核里通过链表组织消息,克服了管道通信数据无格式的问题
信号量:
计数器,类似WaitGroup,当进程想要访问资源的时候就递减信号量,访问完后就递增
信号:
类似于context里的WithCancel,通知事件处理
共享内存
线程间同步方式
互斥锁,读写锁,信号量,条件变量,自旋锁
- 互斥锁,就是最普遍的,获取锁的时候只有一个线程可以访问资源
- 读写锁,读可以共享写不可以,在读多写少下并发性能更好
- 和进程间通信一样,就是计数器加减
- 自旋锁:在获取到锁之前会不断尝试获取锁
- 条件变量:用于线程之间进行条件同步,一个线程可以等待某个条件满足
操作系统学习:通信与锁
http://example.com/2024/06/13/操作系统学习:通信与锁/