线程总结
总的来说有三个重要的:线程的创建、信号量、互斥锁、条件变量
线程的创建
pthread_create //主线程用来创造子线程的
pthread_join //主线程用来等待(阻塞)回收子线程
pthread_detach // 主线程用来分离子线程,分离后主线程不必再去回收子线程
信号量的使用
主线程
sem_init(&sm, 0, 0);//初始化信号量
sem_post(&sm);//发送信号量
子线程
sem_wait(&sm);//等待主线程发信号量,然后进行下面操作。
while(1)
{
}
互斥锁使用:
主线程
pthread_mutex_init(&mutex, NULL);//互斥锁申明
phread_mutex_lock(&mutex);
scanf("%s", buf);
pthread_mutex_unlock(&mutex);
子线程
sem_wait(&sm);//等待主线程发信号量,然后进行下面操作。
phread_mutex_lock(&mutex);
printf("%s",buf); //打印刚主线程的输入东西
pthread_mutex_unlock(&mutex);
线程同步之条件变量
要配合互斥锁进行使用。
主线程
pthread_cond_init(&cmd);
pthread_mutex_init(&mutex);
pthread_cond_signal(&cmd)
子线程
while(1)
{
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond, &mutex);
printf("本次输入了%d个字符\n", strlen(buf));
memset(buf, 0, sizeof(buf));
pthread_mutex_unlock(&mutex);
}