1、主进程创建信号量、创建子线程、然后进入阻塞状态,输出提示信息,等待子线程运行结束。 2、子线程运行,输出提示信息,增加信号量唤醒主线程。 3、主线程继续执行,撤销子线程并输出提示信息。
时间: 2024-05-02 16:16:23 浏览: 101
MulThread.rar_多线程 进度条_子线程界面_进度条 多线程
这是一个经典的线程同步问题,可以使用信号量来实现。
首先,主进程需要创建一个信号量,初始值为0,表示目前没有子线程运行。然后,主进程创建一个子线程,并进入阻塞状态,等待子线程运行结束。
子线程运行时,先输出提示信息,然后增加信号量的值,唤醒主线程。
主线程被唤醒后,继续执行,撤销子线程,并输出提示信息。
下面是示例代码:
```python
import threading
# 创建信号量,初始值为0
semaphore = threading.Semaphore(0)
# 子线程函数
def child_thread():
print("子线程运行")
# 增加信号量的值,唤醒主线程
semaphore.release()
# 创建子线程
t = threading.Thread(target=child_thread)
t.start()
# 进入阻塞状态,等待子线程运行结束
print("主进程等待子线程运行结束...")
semaphore.acquire()
# 子线程结束后,撤销子线程并输出提示信息
t.join()
print("子线程已结束,主进程继续执行")
```
注意,这里使用了信号量来实现线程同步,主线程通过 `semaphore.acquire()` 进入阻塞状态,等待子线程运行完毕后被唤醒。子线程通过 `semaphore.release()` 增加信号量的值,唤醒主线程。
阅读全文