关于进程和线程
来源:3-2 进程和线程

sadcloud
2020-08-13
老师我一直困惑两个问题,有空麻烦老师帮解答下,十分感谢!
- 一个进程中包含多个线程,操作系统调度的真实情况是 【只要一个线程上cpu了,它所在的进程的状态就该为运行中]】 还是 【进程上cpu了,它里面的线程谁能执行就占cpu执行】,说实话我感觉这两个基本概念我理解的还是不太好,,
- 我们什么时候使用多线程编程,什么时候使用多进程通信呢? 线程间同步我写过一点demo的例子,进程间通信 比如共享内存 互斥量啥的 我们开发中真的会用到吗?
写回答
1回答
-
ccmouse
2020-08-19
在现代的操作系统中,操作系统调度的单位是线程。所以是【只要一个线程上cpu了,它所在的进程的状态就该为运行中]】。当然调度系统没有这么简单,它还是会综合考虑线程和它们所在的进程。但是最终选取的是线程。
多线程编程,在第10章 高级知识点中,会进行很详细的讲解。
进程间通信,是当然的被用到。但实际业务中我们通过网络进行通信会是主要方法。发送/接收tcp请求就是一种最为常用的进程间通信。其它进程间通信,比如共享内存,命名管道等,用的的确很少。
需要注意进程和进程之间是无法看到对方内存的,所以我们只能通过“通信”来使得进程和进程进行协作。
但线程之间因为可以看到同一片内存,因此没有很大通信的需求,但是需要处理多个线程同时访问内存的情况。你提到的互斥量,就是线程同步用的,这个倒是非常常用的。
00
相似问题