多线程共享全局变量(加入互斥锁)

上半部分代码


下半部分代码

#抛开互斥锁,我们先说说多线程共享全局变量问题:

    1. 导入包,定义全局变量num(type为int类型)

    2. 定义函数,在其内需要声明变量num(因为num是int类型,文章最后扩展说明),而后就可以改变变量的值(内存地址发生了变化)

    3. 定义另一个函数,同样的的声明变量(共享全局变量)

    4. 定义线程变量名并且启动线程(target=(函数名)............)

    5. 代码最后的 t1.join()意思是让 t1 所在的线程执行完然后执行下一线程(在本程序里和互斥锁有相同的作用)

    6.启动主程序!


#互斥锁:

在使用之前,需要创建互斥锁变量,然后按照上图上锁与释放锁

作用:当代码执行到这一线程需要执行完这一线程然后才能执行其他线程(因为线程执行是无序的,所以说我们谁都不知道什么时候执行,电脑内部机制决定),这和上述join差不多!


#线程定义方式:

demo:threading.Thread(target=show_info, name="mythread", kwargs={"name":"张三", "age":18})

group = None 表示线程组,目前这个值必须使用None

target:执行的目标函数 

name: 线程的名字, 如果不指定名字,那么名字的命名格式Thread-1,....

args: 以元组方式给函数传参  args=(元组) 

kwargs: 以字典的方式给函数传参


#为何要声明变量?(扩展)

可变类型:列表,字典,集合

不可变类型:数字,字符串,元组,布尔类型

说明:不可变类型如果不用global声明,就会重新生成一个不同地址的变量(改的不是原来的变量),进而需要声明更改其值。可变类型就不用声明,因为往其增添数据不会改变内存地址。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • #抛开互斥锁,我们先说说多线程共享全局变量问题: 1. 导入包,定义全局变量num(type为int类型) ...
    米兰的小铁匠阅读 2,227评论 0 1
  • 引用自多线程编程指南应用程序里面多个线程的存在引发了多个执行线程安全访问资源的潜在问题。两个线程同时修改同一资源有...
    Mitchell阅读 2,022评论 1 7
  • 生活中随处都能遇到让你感动的事,一早上班遇到好心人让座,是作为孕妈妈最感动的事,其实我上班只有一站地铁的路程,每每...
    lr瑞瑞阅读 153评论 0 0
  • 中考英语背诵范文8 四、社会经济篇 8.节约用水 水是生命之源。随着水资源的短缺,节约用水是我们每个人的责任,请以...
    老郭lgdennis阅读 791评论 0 0
  • 目录君欢迎你! 望着托盘上的三尺白绫,我面无表情。对于涉嫌谋反的我来说,这种死法莫过于一种恩赐。说起来我要感谢李隆...
    半耳月亮阅读 1,061评论 2 4