多线程

作者: 杜大个 | 来源:发表于2018-10-23 18:33 被阅读0次

1、并发---------------------------------------------------------------------------------------------------------------------------
<h3>同时发起多个任务,但是我们的任务是一个一个交替执行的

并行---------------------------------------------------------------------------------------------------------------------------
任务数量小于或等于核心的数量,同时执行
///////////////////////////////////////////////////////
补充:对比线程和进程
(1)、定义
进程:是操作系统分配资源的调度的基本单元
线程/:是依赖于进程执行,线程是cpu执行调度的最小单元
(2)、区别:
进程是会分配资源空间,每一个进程之间的资源不共享
线程则不会占用资源空间,线程之间的资源是共享想得,为了防止资源的错乱。我们一般加线程锁
(3)、使用的场景
进程一般情况下处理机算密集型任务
线程一般情况下处理IO密集型任务
//////////////////////////////////////////////////////////

2、*********************线程的执行顺序
import threading
import time
def do():
print('我要唱歌*****'+threading.current_thread().name)
time.sleep(1)
def tiao():
print('我哟=体哦啊'+threading.current_thread().name)
time.sleep(1)
if name == '
main**':
threads = []
for i in range(50):

    #创建线程
    td1 = threading.Thread(target=do)
    threads.append(td1)
    td2 = threading.Thread(target=tiao)
    threads.append(td2)
for thread in threads:]
    #开启线程
    thread.start()
    # td1.join()

3、/多线程
python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用
多线程程序的执行顺序是不确定的。当执行到sleep语句时,线程将被阻塞,到sleep结束后,线程进入就绪状态,等待调度。而线程调度将自行选择一个线程执行。上面的代码中只能保证每个线程都运行完整个run函数,但是线程的启动顺序、run函数中每次循环的执行顺序都不能确定。

注意:
多线程的优点是:在一个进程内的所有线程共享全局变量,很方便在多个线程间共享数据
多线程的缺点:缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全)

4、/互斥锁:
当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制
线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁

注意:
如果这个锁之前是没有上锁的,那么acquire不会堵塞
如果在调用acquire对这个锁上锁之前 它已经被 其他线程上了锁,那么此时acquire会堵塞,直到这个锁被解锁为止

5、锁的好处:确保了某段关键代码只能由一个线程从头到尾完整地执行

6、锁的坏处:阻止了多线程并发执行,包含锁的某段代码实际上只能以单线程模式执行,效率就大大地下降了由于可以存在多个锁,不同的线程持有不同的锁,并试图获取对方持有的锁时,可能会造成死锁

相关文章

  • iOS多线程 NSOperation

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程 pthread、NSThread

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程: GCD

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程运用

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程基础

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • iOS进阶之多线程管理(GCD、RunLoop、pthread、

    深入理解RunLoopiOS多线程--彻底学会多线程之『GCD』iOS多线程--彻底学会多线程之『pthread、...

  • iOS多线程相关面试题

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • 多线程之--NSOperation

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS多线程之--NSThread

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

网友评论

      本文标题:多线程

      本文链接:https://www.haomeiwen.com/subject/mpnazftx.html