多任务编程习题(相关简答)

本文详细介绍了进程与线程的区别,强调线程是CPU调度的基本单位,而进程是资源分配的基本单位。同时,文章讨论了线程间的同步与互斥问题,以及GIL(全局解释器锁)对Python多线程的影响。还探讨了进程间如何实现通信,包括共享内存、信号等多种方式。此外,文章提到了多线程的实现方法,如Python的`threading`模块。最后,文章阐述了死锁的概念及其避免策略,并介绍了协程的基本概念、优缺点以及常见的Python协程模块,如`greenlet`和`gevent`。
摘要由CSDN通过智能技术生成

1. 线程与进程的区别?

(1)进程:进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。

(2)线程:线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

(3)联系与区别:

  1. 线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
  2. 进程是资源分配的最小单位,线程是程序执行的最小单位。
  3. 进程有自己的独立地址空间。线程是共享进程中的数据的,使用相同的地址空间.
  4. 进程之间的通信需要以通信的方式(IPC)进行。线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据。

 难点:处理好同步与互斥。

2. 进程间内存是否共享?如何实现通讯?

进程间内存是共享的:

进程间实现通讯的方法有:

但主要有:共享内存信号管道消息队列四种,其通信特点: 

通信方法 无法介于内核态与用户态的原因
管道(不包括命名管道) 局限于父子进程间的通信。
消息队列 在硬、软中断中无法无阻塞地接收数据。
信号量 无法介于内核态和用户态使用。
共享内存 需要信号量辅助,而信号量又无法使用。

4. 多线程有几种实现方法,都是什么?

方法一:python的threading 模块。

例如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值