日期:2014-05-16  浏览次数:20687 次

关于线程生产者消费者的问题
写了一个程序,有30个生产者,30个消费者,运行之后生产者和消费者交错运行,每次都不一样,我想知道原因是什么?我想实现运行一个生产者,运行一个消费者这样,或者是所有生产者运行完之后消费者再运行,从网上看人家说是因为线程阻塞方面的问题,用sleep函数就好,我用sleep(5)和sleep(rand()%5)为什么结果差很多,这俩有区别吗?
主要就是生产者和消费者的运行顺序到底是怎么执行的。感谢!

------解决方案--------------------
当然每次都不一样啊,加互斥锁,生产一个,释放锁,然后消费一个释放锁。
最好同步进行,边生产边消费,当仓库不满就生产,当仓库不空时就消费。
引入条件变量和互斥锁。
至于sleep(5)是睡5秒
而sleep(rand()%5)睡的秒数是随机的,从0到4随机睡眠
这两个有一定的差别