多线程案例

以下是一个简单的多线程案例,实现了一个简单的计数器程序。该程序会同时启动两个线程,每个线程都会对计数器进行加一操作,并输出当前计数器的值。

python 复制代码
import threading

# 定义一个全局变量作为计数器
counter = 0

# 定义一个线程锁,用于对计数器进行互斥操作
lock = threading.Lock()

# 定义一个线程函数,每次将计数器加1,并输出当前计数器的值
def increment():
    global counter
    with lock:
        counter += 1
    print("Current counter value: {}".format(counter))

# 创建两个线程
t1 = threading.Thread(target=increment)
t2 = threading.Thread(target=increment)

# 启动线程
t1.start()
t2.start()

# 等待线程执行完毕
t1.join()
t2.join()

当程序运行时,输出如下:

复制代码
Current counter value: 1
Current counter value: 2

可以看到,两个线程同时对计数器进行加一操作,并输出了当前计数器的值。由于使用了线程锁,保证了计数器的操作互斥,避免了数据竞争的问题。

相关推荐
charlie11451419117 小时前
Cinux: 为大内核铺路
开发语言·c++·操作系统·现代c++
2501_9142459317 小时前
C语言设计模式详解:从理论到实践的完整指南
c语言·开发语言·设计模式
Hazenix18 小时前
Go 指南:一篇文章速通 Golang
开发语言·后端·golang
灯澜忆梦18 小时前
GO_复合类型---指针
开发语言·后端·golang
Ulyanov18 小时前
雷达导引头Python仿真框架:GPU加速、6-DOF模型与半实物仿真接口
开发语言·python·雷达信号处理·雷达导引头
wuqingshun31415918 小时前
MYSQL的乐观锁和悲观锁是什么?
java
Jerry18 小时前
LeetCode 101. 对称二叉树
算法
唐青枫19 小时前
Java SLF4J 实战指南:从日志门面到 Logback、MDC 和链路追踪
java
名字还没想好☜19 小时前
Go slice 的 append 陷阱:共享底层数组导致的数据串改
开发语言·后端·golang·go·slice
bitbrowser19 小时前
Claude 账号频繁被封?转向国内可直接使用的 AI 工具
开发语言·php