摘要: 生产者消费者是典型的线程同步问题,生产者往共享区域中生产加入产品,消费者往共享区域中消费取出产品。 生产者:若共享区域未满,则加入产品,并通知消费者;若共享区域已满,则等待消费者消费。 消费者:若共享区域为空,则等待生产者生产;若共享区域未满,则消费并通知生产者。 #include<stdio.h> 阅读全文
posted @ 2022-04-16 21:34 Kayden_Cheung 阅读(120) 评论(0) 推荐(0) 编辑
摘要: while(条件判断){ pthread_cond_wait(&cond, &lock); } 在上面的情况中,如果我们不使用互斥锁,可能在 while 语句之后,当前线程还未进入 wait ,但是另一个线程调用了 pthread_cond_singal,就会导致唤醒丢失。 所以,在操作条件变量时需 阅读全文
posted @ 2022-04-16 21:25 Kayden_Cheung 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 1 为何需要线程同步? 由于线程共享进程的资源,会产生竞态条件,在某些情况下需要协调指令执行的先后顺序,也就是实现线程同步。 下面是一个常见的多线程累加程序,由于sum++并不是一个原子操作,所以多个线程互相抢占从而造成计算错误。 #include<stdio.h> #include<stdlib. 阅读全文
posted @ 2022-04-16 15:55 Kayden_Cheung 阅读(44) 评论(0) 推荐(0) 编辑
//目录