Linux线程 分离和同步与互斥 条件变量
#include <pthread.h>
#include <stdio.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
void* thread_routine(void* arg) {
// 线程将在这里等待,直到主线程发送信号
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond, &mutex);
printf("线程接收到信号,继续执行。\n");
pthread_mutex_unlock(&mutex);
return NULL;
}
int main() {
pthread_t thread_id;
// 创建线程
pthread_create(&thread_id, NULL, &thread_routine, NULL);
// 主线程休眠,模拟工作
sleep(1);
// 发送信号给等待的线程
pthread_mutex_lock(&mutex);
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
// 等待线程结束
pthread_join(thread_id, NULL);
return 0;
}
这段代码展示了如何在Linux环境下使用pthread库创建线程,使用互斥锁和条件变量来同步线程的执行。主线程在休眠后发送一个信号给等待线程,等待线程接收到信号后继续执行。
评论已关闭