多线程处理时,A执行完后,BCD三件事一起执行,但他们的执行用时不一样,用哪一种编程方式,让三件事情执行完后,唤醒E来执行?
时间: 2024-05-20 17:10:14 浏览: 119
多线程:“等待唤醒”编程题
您可以使用信号量来实现这个任务。先创建一个二元信号量sem_A,值为1,用于控制A的执行,当A执行完后,调用sem_post(sem_A)释放信号量。对于BCD三件事情的执行,可以分别启动三个线程,对于每个线程,先调用 sem_wait(sem_A),等待A的执行完毕,然后执行相应的任务,并在结束后调用sem_post(sem_E)释放一个信号量sem_E(初值为0)来唤醒E线程的执行。E线程在开始执行前也要等待三个信号量sem_E都被释放,即调用三次sem_wait(sem_E)。这样就可以保证ABC三件事情的执行顺序(串行)以及E的唤醒顺序(并行)了。
阅读全文