多线程、多进程、锁

什么是多线程

当执行多个任务的时候,可以用多个进程来执行,也可以用一个进程中多个线程来实现,线程是操作系统进行运算调度的最小单元(进程是操作系统进行资源分配的最小单位)。

线程和进程的区别

进程间内存不是共享的。多线程之间内存是共享的,这样多线程执行效率会更高。但是也正是由于此,使用多线程时,一个线程出现问题可能会导致整个进程出现问题。多进程这方面会显得代码会健壮的多。

多进程和多线程的区别

1.首先,进程是操作系统进行资源分配的最小单元,而线程是cpu执行运算调度的最小单元(如果你需要进行大量的计算,使用多线程。)
2.多进程优点是稳定性高(内存独立),缺点是开销很大,操作系统同时运行进程数是有限的。多线程执行效率比多进程快一些(内存共享),缺点是稳定性有问题,一个线程挂了可能会导致整个进程出问题(内存共享)。

死锁

多线程之间有多把锁的时候,相互等待对方的锁,导致互相占用资源不释放。

防止死锁机制

多线程中死锁问题出现很多时候是由于一个线程占用多把锁导致的,为了解决这个问题,为每把锁分配一个id,只准按照升序规则使用多个锁。另一个策略,给上锁加一个时限,超过时间,自动释放这把锁。

多线程之间通信

1.共享内存通信
2.管道通信pipe
3.消息队列queue

进程之间通信

python GIL锁

全局性解释锁,为了保证线程安全,Cpython中存在这把锁,由于这把锁的存在,python解释器同一时间只允许一个线程进行执行,导致多核的情况下,也只能发挥单核的性能。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值