主进程创建信号量、创建子线程、然后进入阻塞状态,输出提示信息,等待子线程运行结束。 2、子线程运行,输出提示信息,增加信号量唤醒主线程。 3、主线程继续执行,撤销子线程并输出提示信息
时间: 2024-05-14 13:17:45 浏览: 88
你需要使用操作系统提供的信号量机制来实现主线程与子线程的同步。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
sem_t sem; // 定义信号量
void *thread_func(void *arg) {
printf("子线程运行\n");
sem_post(&sem); // 增加信号量
pthread_exit(NULL);
}
int main() {
pthread_t tid;
sem_init(&sem, 0, 0); // 初始化信号量为0
printf("主线程创建信号量和子线程\n");
pthread_create(&tid, NULL, thread_func, NULL); // 创建子线程
sem_wait(&sem); // 等待子线程增加信号量
printf("主线程继续执行\n");
pthread_join(tid, NULL); // 等待子线程结束
sem_destroy(&sem); // 销毁信号量
printf("主线程撤销子线程\n");
return 0;
}
```
在上述代码中,主线程首先创建了一个信号量并初始化为0,然后创建了一个子线程,并进入了阻塞状态,等待子线程的信号量增加。子线程运行后会增加信号量,唤醒主线程继续执行。主线程等待子线程结束后,撤销子线程并销毁信号量。
阅读全文