多线程同步:刚开始接触线程,无从下手,如何编程实现急求!!!!!!!!!!

来源:互联网  时间:2016/8/18 22:54:31

关于网友提出的“ 多线程同步:刚开始接触线程,无从下手,如何编程实现急求!!!!!!!!!!”问题疑问,本网通过在网上对“ 多线程同步:刚开始接触线程,无从下手,如何编程实现急求!!!!!!!!!!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 多线程同步:刚开始接触线程,无从下手,如何编程实现急求!!!!!!!!!!
描述:

有两个线程,生产线程负责产生随机自然数(>0),每次产生一个,产生好后放入一个数组构成的缓冲区。消费线程负责取出来,显示在屏幕上。缓冲区的number字段为0时表示为该缓冲区为空闲;否则为忙状态。
当缓冲区都处于忙状态时,生产线程要等待缓冲区中有空闲缓冲区,即等待消费线程进行消费;当缓冲区都处于空闲状态时,消费线程要等待生产线程生产。
实现者必须体会这句话的含义,即条件变量。 
缓冲区的记录定义如下:
struct node_st {
     int number;
     struct node_st *next;
};
typedef struct node_st node_st;
node_st pool[10]; /* 缓冲区个数为10个 */
要求:
1) 消费线程每取走一个自然数,则将该缓冲区置成0, 即将 node_st 的 number 字段置成0 
2) 生成线程检验缓冲区是否为空的依据是判断node_st 的 number 字段是否为0 
3) 不容许生产线程和消费线程同时访问缓冲区
4) 使用 mutex, semaphore 等 线程同步对象,通信对象
5) 不能使用 Sleep 等函数来同步线程,但可以使用Sleep来调节生产或消费的速度。
6) 使用VC的 console 工程,将生产线程产生的自然数和消费线程消费的自然数输出在屏幕上。

上一篇菜鸟问:请问如何使用dll导出类中的函数,需要动态加载
下一篇关于SetWindowsHookEx挂接后释放的问题请教
明星图片
相关文章
《 多线程同步:刚开始接触线程,无从下手,如何编程实现急求!!!!!!!!!!》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)