首页 > 编程知识 正文

多线程编程的基本原理(什么是多线程)

时间:2023-05-04 20:15:05 阅读:122100 作者:1891

多线程是指一个进程同时运行多个执行路径(线程)。 进程:在操作系统上运行的APP应用程序

线程:线程是指在进程中独立执行任务的单元。

进程(process )和线程)是操作系统的基本概念,但它们是抽象的,不容易掌握。

最近,我读了一份资料,发现有一个很好的类比可以把它们解释得通俗易懂。

1.

计算机的核心是CPU,承担所有的计算任务。 就像工厂,总是在运转。

2.

假设工厂电力有限,一次只能给一个工厂供电。 也就是说,一个工厂开始作业时,其他工厂必须停止作业。 背后的原因是一个CPU一次只能执行一个任务。

3.

流程就像工厂的工厂,代表CPU可以处理的单个任务。 在任何时刻,CPU总是运行一个进程,而其他进程处于非运行状态。

4.

一个车间里,可以有很多工人。 他们合作完成一个任务。

5.

线程好像是职场的工人。 进程可以包含多个线程。

6.

车间的空间由工人们共享。 例如,许多房间允许所有工人出入。 这表明一个进程的内存空间是共享的,并且每个线程都可以使用这些共享内存。

7.

但是,各个房间的大小不同,也有像厕所这样最多只能容纳一个人的房间。 里面有人的时候,别人不能进去。 这意味着,如果一个线程使用特定的共享内存,则其他线程必须等待其退出,然后才能使用该内存。

8.

防止别人入侵的一个简单方法是锁门。 先来的人锁门,后来的人看到锁门,就排在门口,等锁开了再进去。 这称为“互斥”(Mutual exclusion,缩写为Mutex ),可防止同时读写具有多个线程的内存区域。

9.

有些房间可以同时容纳n个人,比如厨房。 也就是说,如果人数大于n,出来很多的人只能在外面等。 这只能用于一定数量的线程,如某些内存空间。

10.

此时的解决方法是在门口锁上n把锁。 进去的人拿走钥匙,出来的时候把钥匙放回去。 后来来的人发现钥匙是虚构的,知道必须在门口排队等候。 这称为“信号”(Semaphore ),用于防止多个线程相互冲突。

可见mutex是semaphore的特殊情况(如果n=1)。 也就是说,可以使用后者代替前者。 但是,由于mutex比较简单高效,在必须保证资源垄断的情况下,就采用了这样的设计。

11.

操作系统的设计可以归纳为以下三点。

(1)多进程形式,允许同时执行多项任务;

)以多线程形式,允许将单个任务分成不同的部分执行;

)3)提供一种协调机制,防止进程之间和线程之间的冲突,同时允许进程之间和线程之间共享资源。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。