摘要:同步中有一个称为生产者-消费者问题的经典问题,也称为有界缓冲区问题。一个或多个生产者(线程或进程) 创建着一个个的数据条目,然后这些数据条目有一个或多个消费者(线程或进程)处理。数据条目在生产者和消 费者之间是使用某种类型的IPC传递的。 而在我们的单个消费者和单个生产者之间的问题中,使用互斥锁和条 阅读全文
posted @ 2018-06-13 15:46 XNQC 阅读(1614) 评论(0) 推荐(0) 编辑
摘要:生产消费问题是一个经典的数学问题,要求生产者 消费者在固定的仓库空间条件下,生产者每生产一个 产品将占用一个仓库空间,生产者生产的产品库存不能越过仓库的存储量,消费者每消费一个产品将增加 一个仓库空间,消费者在仓库产品为0时不能再消费。 以下使用了两个信号量,一个用来管理消费者即sem_produc 阅读全文
posted @ 2018-06-10 22:46 XNQC 阅读(4275) 评论(0) 推荐(0) 编辑
摘要:共享内存 共享内存:共享内存就是分配一块能被其它进程访问的内存。每个共享内存段在内核中维护着一个内部结构shmid_ds, 该结构定义在头文件linux/shm.h中,其结构如下: 要获得一个共享内存的描述符,只需提供该共享内存的键值即可,该键值通常由函数ftok返回,该函数原形为: #includ 阅读全文
posted @ 2018-06-06 23:43 XNQC 阅读(841) 评论(0) 推荐(0) 编辑
摘要:消息队列 消息队列:消息队列是一个存放在内核中的消息链表,每个消息队列由消息队列标识符标识。与管道不同的是消息队 列存放在内核中,只有在内核重启(即操作系统重启)或者显式地删除一个消息队列时,该消息队列才会被真正的删除。 Linux内核中,每个消息队列都维护一个结构体msqid_ds,此结构体保存着 阅读全文
posted @ 2018-05-27 20:05 XNQC 阅读(1392) 评论(0) 推荐(0) 编辑
摘要:图的遍历:从图的任意一个顶点出发,按照某一种次序,对图中的所有顶点访问一次并且只能访问一次。遍历经常 用两种方法:广度优先遍历和深度优先遍历。 广度优先遍历:类似于树的按层次遍历的过程。假设从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问 过的邻接点,然后分别从这些邻接点出发依次访问它们的 阅读全文
posted @ 2018-05-24 21:48 XNQC 阅读(1248) 评论(0) 推荐(0) 编辑
摘要:图:图是一种数据结构,由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),V表示为顶点的集 合,E表示为边的集合。 首先肯定是要对图进行存储,然后进行一系列的操作,下面对图的两种存储方式邻接矩阵和邻接表尽行介绍。 (一)、邻接矩阵存储: 用两个数组分别进行存储数据元素(顶点)的信息和数据 阅读全文
posted @ 2018-05-23 19:56 XNQC 阅读(2665) 评论(0) 推荐(0) 编辑
摘要:动态分区分配是根据进程的实际需要,动态的为之分配内存空间。而在实现可变分区分配时,将涉及到分区分配中 所用的数据结构、分区分配算法和分区的分配与内存回收的过程。 分区分配中的数据结构:(1)描述空闲块的数据结构。(2)内存块的描述。 分区分配算法: (1)首次适应算法(First Fit):从空闲分 阅读全文
posted @ 2018-05-20 23:43 XNQC 阅读(8917) 评论(4) 推荐(1) 编辑
摘要:一、C++的前置++和后置++ 在C++中,运算符重载是你必须要掌握的重点,而前置++和后置++有什么区别呢?其实前置++和后置++是有关于 影响效率的问题,前置++比后置++的效率要高,原因是因为前置++不会产生一个临时对象而去直接进行++运算,而后 置++要先产生一个临时对象来保存当前数据,然后 阅读全文
posted @ 2018-05-16 20:26 XNQC 阅读(629) 评论(0) 推荐(0) 编辑
摘要:信号量 信号量:信号量是一个计数器,常用于处理进程或线程的同步问题,特别是对于临界资源访问的同步。临界资源可以 理解为在某一时刻只能由一个进程或线程操作的资源,这里的资源可以是一段代码、一个变量或某种硬件资源。信号量的 值大于或等于0时表示可供并发进程使用的资源实体数,小于0时表示正在等待使用临界资 阅读全文
posted @ 2018-05-13 16:44 XNQC 阅读(183) 评论(0) 推荐(0) 编辑
摘要:一、管道 管道:管道是一种半双工的通信方式,数据只能单方向流动,而且只能在具有亲缘关系的进程间使用,因为管道 传递数据的单向性,管道又称为半双工管道。进程的亲缘关系通常是指父子进程关系。 管道的特点决定了其使用的局限性: 数据只能由一个进程流向另一个进程(其中一个为写管道,另一个为读管道);如果要进 阅读全文
posted @ 2018-05-10 01:16 XNQC 阅读(1216) 评论(0) 推荐(1) 编辑