关于进程和线程

来源:3-2 进程和线程

sadcloud

2020-08-13

老师我一直困惑两个问题,有空麻烦老师帮解答下,十分感谢!

  1. 一个进程中包含多个线程,操作系统调度的真实情况是 【只要一个线程上cpu了,它所在的进程的状态就该为运行中]】 还是 【进程上cpu了,它里面的线程谁能执行就占cpu执行】,说实话我感觉这两个基本概念我理解的还是不太好,,
  2. 我们什么时候使用多线程编程,什么时候使用多进程通信呢? 线程间同步我写过一点demo的例子,进程间通信 比如共享内存 互斥量啥的 我们开发中真的会用到吗?
写回答

1回答

ccmouse

2020-08-19

在现代的操作系统中,操作系统调度的单位是线程。所以是【只要一个线程上cpu了,它所在的进程的状态就该为运行中]】。当然调度系统没有这么简单,它还是会综合考虑线程和它们所在的进程。但是最终选取的是线程。

多线程编程,在第10章 高级知识点中,会进行很详细的讲解。

进程间通信,是当然的被用到。但实际业务中我们通过网络进行通信会是主要方法。发送/接收tcp请求就是一种最为常用的进程间通信。其它进程间通信,比如共享内存,命名管道等,用的的确很少。

需要注意进程和进程之间是无法看到对方内存的,所以我们只能通过“通信”来使得进程和进程进行协作。

但线程之间因为可以看到同一片内存,因此没有很大通信的需求,但是需要处理多个线程同时访问内存的情况。你提到的互斥量,就是线程同步用的,这个倒是非常常用的。

0
0

Google面试官亲授-Java面试新手尊享课

为面试新手量身定制的Java面试尊享课,解锁“鲤鱼跃龙门”的妙招

2853 学习 · 180 问题

查看课程