MST

星途 面试题库

面试题:Python中信号量机制在多线程同步里如何初始化及基本使用

请用Python代码示例展示如何初始化一个信号量,并在两个线程中使用信号量来控制资源访问,确保同一时间只有一个线程能访问特定资源。
14.3万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
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()