设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 9467|回复: 1
打印 上一主题 下一主题

关于 多线程全局变量共享(上互斥锁)的基础问题

[复制链接]

4

主题

0

好友

44

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2019-4-30 15:50:57 |只看该作者 |倒序浏览
我真佛了,自己码的代码跟某培训视频一模一样,但为啥我这里上了互斥锁就实现不了 全局变量共享了呢?

代码如下:
import threading
import time

g_num = 0     #定义全局变量

def test1(nums):
    global g_num
    mutex.acquire()
    for i in range(nums):
        g_num += 1
    mutex.release
    print('----in test1 g_num = %d---' % g_num)


def test2(nums):
    global g_num
    mutex.acquire()
    for i in range(nums):
        g_num += 1
    mutex.release
    print('----in test2 g_num = %d---' % g_num)

mutex = threading.Lock()

def main():
    t1 = threading.Thread(target=test1,args = (1000,))
    t2 = threading.Thread(target=test2,args = (1000,))

    t1.start()
    t2.start()

    time.sleep(1)    # 等待上边两个线程执行完毕
    print('----Thread All--g_num = %d----' % g_num)


if __name__ == '__main__':
    main()
结果如下:

----in test1 g_num = 1000---
----Thread All--g_num = 1000----



结果的意思是说,同一时间只能有一个进程调用全局变量 进行计算?




回复

使用道具 举报

4

主题

0

好友

44

积分

新手上路

Rank: 1

沙发
发表于 2019-4-30 16:11:36 |只看该作者
已解决,语法小毛病
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 07:44 , Processed in 0.014919 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部