用c语言创建两个线程,当线程1进行一半时运行线程2,等待线程2运行结束再运行线程1
时间: 2023-11-28 20:06:24 浏览: 76
可以使用pthread库来实现。具体代码如下:
```c
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex; // 定义互斥锁
void *thread1(void *arg)
{
pthread_mutex_lock(&mutex); // 加锁
printf("Thread 1 is running...\n");
sleep(1); // 模拟线程运行
pthread_mutex_unlock(&mutex); // 解锁
return NULL;
}
void *thread2(void *arg)
{
pthread_mutex_lock(&mutex); // 加锁
printf("Thread 2 is running...\n");
sleep(1); // 模拟线程运行
pthread_mutex_unlock(&mutex); // 解锁
return NULL;
}
int main()
{
pthread_t tid1, tid2;
pthread_mutex_init(&mutex, NULL); // 初始化互斥锁
pthread_create(&tid1, NULL, thread1, NULL); // 创建线程1
pthread_create(&tid2, NULL, thread2, NULL); // 创建线程2
pthread_join(tid1, NULL); // 等待线程1结束
pthread_join(tid2, NULL); // 等待线程2结束
pthread_mutex_destroy(&mutex); // 销毁互斥锁
return 0;
}
```
在该代码中,先定义了一个互斥锁`mutex`,然后在`thread1`和`thread2`函数中分别加锁和解锁,以保证线程1和线程2的运行互不干扰。在`main`函数中,先创建了线程1和线程2,然后调用`pthread_join`函数分别等待线程1和线程2结束。这样,线程1和线程2就可以交替运行了。
阅读全文