点击查看demo代码
demo运行结果如图
借用网上的一段话
在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这种生产消费能力不均衡的问题,所以便有了生产者和消费者模式。
可以对数组取模的形式完成循环队列,然后遵循先进先出,在这个“循环队列”里, 使用PV操作来实现消费者和生产者之间的同步。
信号量操作和进程间通信类似,不同是进程间通信在内核中完成,这个是在共享区。
线程在信号量不为0的情况下则可以获取到信号,进行操作,每次操作完则进行信号减1,直到为0的时候才会处于阻塞。
笔记:关键函数,模拟PV操作
int sem_init(sem_t *sem, int pshared, unsigned int value);
int sem_destroy(sem_t *sem);
int sem_wait(sem_t *sem);
int sem_post(sem_t *sem);
笔记未完待续。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)