import threading
import time
# 初始化信号量,最多允许1个线程同时访问
semaphore = threading.Semaphore(1)
def access_resource(thread_name):
# 获取信号量
semaphore.acquire()
try:
print(f"{thread_name} 获得信号量,开始访问资源")
time.sleep(2) # 模拟资源访问
print(f"{thread_name} 访问资源结束")
finally:
# 释放信号量
semaphore.release()
# 创建两个线程
thread1 = threading.Thread(target=access_resource, args=("Thread 1",))
thread2 = threading.Thread(target=access_resource, args=("Thread 2",))
# 启动线程
thread1.start()
thread2.start()
# 等待线程结束
thread1.join()
thread2.join()