- 博客(2)
- 收藏
- 关注
原创 C 实现信号量互斥同步操作(sem_t)
sem_t: 信号量数据类型sem:信号量名pshared:判断信号量于进程还是线程间使用,0:进程,非0:线程,(一般用1)value:信号量资源数int sem_wait(sem_t *sem):v操作:若资源数为0,则阻塞, 反之,资源数减1sem:信号量名p操作,资源数加1sem:信号量名。
2024-09-13 21:44:08
630
原创 有了互斥锁为什么还要用到条件变量?
1,我们使用互斥锁对两个线程做互斥操作时,通常是用循环(while1)操作,循环里代码块如果是用到了一开始是互斥锁加锁操作,而互斥锁已经被其他线程上锁,此时当前线程就会不断的去检查锁的状态,这一过程会消耗很多资源,而条件变量则会将当前线程挂起,不会造成资源的浪费2,条件变量当条件满足时,一个或多个变量都会被唤醒,如在生产者与消费者模式中,如果我们要让多个生产者去生产,而多个生产者又在多个线程,我们可以通过条件变量来满足,而互斥锁则不能满足该条件(条件变量在阻塞线程时,会释放互斥锁,直至唤醒)
2024-09-12 21:40:20
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人