进程并发与互斥性问题小结
来源:互联网 发布:北京时时彩计划数据 编辑:程序博客网 时间:2024/04/28 08:02
进程并发与互斥性问题小结
@(操作系统)
有朋友问到一个小问题,不太好直接私信回答,因为含有代码,格式不好调。写到这里作为参考。
明确几个小点:
- 无论是不是有线程,进程都是分配资源的单位。
- 有线程时,线程是调度的基本单位。
- 进程内,可以共享全局变量(资源)。既然有共享资源,且线程是调度的基本单位,就意味着需要互斥访问,我们说临界资源需要加锁,或其他机制控制,就是保证资源某一时刻独占性使用。
- 线程内的变量是私有的。
剩下的细节,在问题中解释。
(2016.30) 进程P1和进程P2均包含并发执行的线程,部分伪代码描述如下:
//进程P1int x = 0;Thread1(){ int a; a = 1; x+=1;}Thread2(){ int a; a = 2; x += 2;}//进程P2int x = 0Thread3(){ int a; a = x; x += 3;}Thread4(){ int b; b = x; x += 4;}
下列选项中,需要互斥执行的操作是:(C)
A. a = 1与a = 2
B. a = x与b = x
C. x += 1与x += 2
D. x += 1与x += 3
分析:注意到两个进程是独立分配资源的单位,那么格子进程的资源之间看做是不相关的即可。因此,D项,x += 1操作的是进程1自己的资源,x += 3操作的是进程2自己的资源。个人自扫门前雪,互相管不着。
线程具有相似性啊,不同线程之间的资源,也是自家的东西,私有财产,想怎么操作就怎么操作,互相管不着。比如a = 1,a = 2,a = x,b = x,爱怎么折腾怎么折腾,不必互斥。A,B妥妥的错。
除非,它们在操作共享的资源。比如进程1中的x对于线程1,2来说,就是共享资源,需要互斥访问。否则会导致数据不一致。所以线程1和线程2的对x的操作,就需要互斥访问。
2 0
- 进程并发与互斥性问题小结
- 进程并发执行问题
- 并发进程的饥饿问题
- 并发进程的饥饿问题
- DBWn与LGWR进程小结
- 进程与线程常见问题小结
- 数据库事务与并发章节小结
- 进程与线程 并发与并行
- 一种并发服务器关于进程的问题
- 多进程之读写并发问题
- 并发小结
- sendmail进程重复启动问题小结
- linux僵死进程与并发服务器编程
- Java并发编程--进程与线程
- 并发进程的同步与互斥
- 网络编程与并发-线程、进程、协程
- Erlang 语言中的进程与并发
- 并发、线程、进程与多线程技术
- ubuntu环境中搭建java开发环境(含遇到的错误及解决办法)
- HTTP/TCP/IP
- softmax——logicstic的泛化
- 用安卓手机控制电脑关机
- java将成为软件发展的规范和希望
- 进程并发与互斥性问题小结
- 数据库初始化
- Shallow heap & Retained heap
- Spark RDD 到 LabelPoint的转换(包含构造临时数据的方法)
- CSDN-markdown编辑器使用教程
- Lintcode 翻转字符串
- 【9-1-1】静态链表和动态链表
- char *a 与char a[] 的区别
- C++ builder提供从MFC到自身支持的过程