linux条件锁
父线程里:
pthread_mutex_lock(&s_startupMutex);
pthread_attr_t attr;
pthread_attr_init (&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
printf("server_create_child_thread\n");
err = pthread_create(child_thread_value,&attr,child_thread,(void *)&peer );
while (child_thread_start == 0) {
printf("child_thread_start=0\n");
pthread_cond_wait(&s_startupCond, &s_startupMutex);
}
child_thread_start=0;
pthread_mutex_unlock(&s_startupMutex);
子线程里:
pthread_mutex_lock(&s_startupMutex);
sock_number = *(int *)sock_file_num;
child_thread_start = 1;
printf("broadcast\n");
pthread_cond_broadcast(&s_startupCond);
pthread_mutex_unlock(&s_startupMutex);
这里子线程明明广播了条件信号,为什么父线程还是一直阻塞等待呢,像是完全没有被唤醒
pthread_mutex_lock(&s_startupMutex);
pthread_attr_t attr;
pthread_attr_init (&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
printf("server_create_child_thread\n");
err = pthread_create(child_thread_value,&attr,child_thread,(void *)&peer );
while (child_thread_start == 0) {
printf("child_thread_start=0\n");
pthread_cond_wait(&s_startupCond, &s_startupMutex);
}
child_thread_start=0;
pthread_mutex_unlock(&s_startupMutex);
子线程里:
pthread_mutex_lock(&s_startupMutex);
sock_number = *(int *)sock_file_num;
child_thread_start = 1;
printf("broadcast\n");
pthread_cond_broadcast(&s_startupCond);
pthread_mutex_unlock(&s_startupMutex);
这里子线程明明广播了条件信号,为什么父线程还是一直阻塞等待呢,像是完全没有被唤醒
...全文
相关推荐
Mutex.zip_Linux/Unix编程_C/C++_
总结来说,`Mutex.zip`这个压缩包提供了关于Linux下C/C++多线程同步的实践示例,包括互斥锁、读写锁、条件锁的使用,以及防止死锁的策略。
linux c线程池子
**条件锁与互斥锁的作用**: - **条件变量**:用于线程间的同步操作,使工作线程能在无任务时进入休眠状态,直到有新任务到达被唤醒。
细说Linux细说Linux
【Linux发行版】Linux发行版是围绕Linux内核构建的一套完整的操作系统,包括各种工具、库、图形用户界面(GUI)和应用程序。常见的Linux发行版有:1.
linux下的宋体linux下的宋体linux下的宋体
要在Linux下使用宋体,首先需要确保你的Linux发行版已经安装了支持中文的字体包。
linux期末考试参考题库_linux期末_linux_Linux题库_题库Linux_
这份"linux期末考试参考题库"文档将帮助你全面复习这些关键知识点。1. **Linux基础概念**:理解什么是Linux,它与Unix的关系,以及它的开放源码特性。


