摘要: 1. 生产者消费者 生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。 //假设缓冲队列长度为nsemaphoreproduce_count=n;semaphoreconsume_count=0;semaphorebuffer_mutex=1;Producer(){while(true){生产一个产品P(produce_count);P(buf 阅读全文
posted @ 2011-08-12 16:55 xiaodongrush 阅读(4037) 评论(2) 推荐(0) 编辑
摘要: 1. 简述 首先要决定使用链表结构实现还是顺序结构实现,对于顺序结构实现,当数据满的情况下进行Push时,需要开辟新的数组,进行复制,因此不能保证Push的时间复杂度为O(1);链表结构能够保证Push和Pop的时间复杂度为O(1)。Min的时间复杂度也要求O(1),通过空间换时间,分别记录链表,当包含一个节点时,最小值所在的节点,当包含两个节点时,最小值所在的节点,等等,直到所有节点时,最小值所在的节点。这样相当于两个链表,一个链表保存数值,另一个链表保存第一个链表中,对应节点范围内的最小值所在节点。2. 实现#include<iostream>usingnamespacestd 阅读全文
posted @ 2011-08-12 14:52 xiaodongrush 阅读(1522) 评论(1) 推荐(0) 编辑