day 30

网络编程(下)

多线程的作用

站在两个角度去看问题:

==四个任务,计算密集型,每个任务需要10s:==

单核:

开启进程

消耗资源过大

4个进程:40s

开启线程

消耗资源远小于进程

4个进程:40s

多核:

开启进程

并行执行,效率比较高

4个进程10S

开启线程

并发执行,执行效率低

4个线程:40S

==四个任务,IO密集型,每个任务需要10s:==

单核:

开启进程

消耗资源过大

4个进程:40s

开启线程

消耗资源远小于进程

4个线程:40s

多核:

开启进程

并行执行,效率小于多线程,因为遇到IO会立马切换CPU的执行权限

4个进程:40s + 开启进程消耗的额外时间

开启线程

并发执行,执行效率高于多进程

4个线程:40s

==总结==:

在计算密集型的情况下;使用多进程.

在IO密集型的情况下;使用多线程

高效执行多个进程,内多个IO密集型的程序: 使用多进程+多线程

递归锁

(了解知识点)

RLOCK:与比喻成望能钥匙,可以提供给人们使用.

? 但是第一个使用的时候,会对该锁做一个引用计数.

? 只有引用计数为0,才能真正释放让另一个去使用

信号量

(了解知识点)

? 互斥锁:比喻成一个家用马桶

? 同时间只能让一个人去使用

? 信号量:比喻成公厕多个马桶.

? 同一时间可以让多个人去使用

线程队列

(了解知识点)

FIFO队列:先进先出

LIFO队列:后进先出

优先级队列:根据参数内,数字的大小进程分级,数字值越小,优先级越高(可参照ASCLL码表)

相关文章
相关标签/搜索