一,线程,进程同步
为什么需要同步
微信截图_20190818173000.png
1.线程同步
以下都是对资源加锁
- 互斥量(互斥锁)
逻辑开始加个锁,结束再解锁,其他进程,线程不可以中途执行
操作系统互斥量API:pthread_mutex_t
缺点:性能损耗大,耗时增加 - 自旋锁
同互斥量原理相似,不同点是不会让出CPU,不适合单核CPU,会造成等待
优势,避免了进程,线程切换,上下文切换的开销,提高速度
这里没有听懂,再去查查资料
- 读写锁
因为存在多读少写类型的资源,为提升效率,读取操作不上锁。
读写锁是一种自旋锁,只对写操作之间,读写之间,是互斥的。 - 条件变量
允许线程睡眠,知道满足条件,唤醒线程;来处理0和满载两个极端值的情况。
2.进程同步
-
共享内存
正常情况下,每个进程有自己的进程空间,通过自己的页表管理,指向物理内存的地址。
多个进程共用物理内存,又相互独立。
共享内存就是两个进程可以使用同一块物理内存
捕获.PNG
捕获.PNG - Unix域套接字(进程通信方法)
类似网络变成的套接字(socket)
3.使用fork系统调用 创建进程
fork函数无参数,创建的子进程会拥有和父进程一样的所有状态。
调用一次,返回两次,为子进程的id和0(0是继承自父进程的fork函数返回的空,id是父进程的返回)
网友评论