看到一个理解进程和线程的故事

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看到一个理解进程和线程的故事相关的知识,希望对你有一定的参考价值。

假如你有一家工厂(工厂就是电脑CPU),工厂里面有多个车间(车间就是进程);

由于工厂接单太少,只要运行一个车间(单进程执行任务);

就能完成任务,车间里面有N个工人(工人就是线程)在工作 ;

每个人都在做钢化膜,做好之后都要到洗手间水龙头去冲洗一下,洗手间就是整个车间的共享内存空间 ;

但水龙头只有一个,所以在一个人工人在冲洗的时候,另一个工人是不允许冲洗的,这代表一个线程使用某些共享内存时 ;

其他线程必须等它结束,才能使用这一块内存。所以防止别人来抢用,进入洗手间后把门反锁 ;

等用完再出来,下一个人接着,这就是(互斥锁 Mutex);

防止多线程同时读写某一块内存,冲洗之后就进入加工打磨,打磨机有3台,也就是进入3个打磨机的房间打磨,

为了不让别人在你打磨时候来打扰,你进入打磨间的时候反锁门,外面会亮一个红灯,告诉别人你在打磨 ;

当3个打磨机房间都亮了红灯,其他人必须在外面等,这就是(信号量Semaphore);

 

其实互斥只是信号量的一种特殊情况,就是当只有一个打磨间的时候,用信号量和互斥锁都可以;但互斥锁效率高,也简单;

以上是关于看到一个理解进程和线程的故事的主要内容,如果未能解决你的问题,请参考以下文章

多进程和多线程的理解,通俗易懂

理解Linux的进程,线程,PID,LWP,TID,TGID

记录PHP的进程和线程理解

我是如何学习写一个操作系统:故事的高潮之进程和线程1

loadrunner理解进程和线程的区别

线程和进程