Tag: fifo

当我们需要存储“最后的n个项目”时,列表是否比向量好?

有很多问题表明,应该总是使用一个向量,但是在我看来,一个列表对于这个场景来说会更好,我们需要存储“最后n个项目” 例如,假设我们需要存储最后看到的5个条目:迭代0: 3,24,51,62,37, 然后在每次迭代中,索引0处的项目被移除,并且在最后添加新项目: 迭代1: 24,51,62,37,8 迭代2: 51,62,37,8,12 似乎对于这个用例来说,对于一个向量,复杂度将是O(n),因为我们将不得不拷贝n个项目,但是在一个列表中,它应该是O(1),因为我们总是斩断头,并添加到尾巴每次迭代。 我的理解是正确的吗? 这是一个std :: list的实际行为?

Java中的FIFO类

我想通过Java中的类实现FIFO。 这样的课程是否已经存在? 如果没有,我该如何执行我自己的? 注意 我在这里find了一个类http://www.dcache.org/manuals/cells/docs/api/dmg/util/Fifo.html ,但是它不包含dmg.util。*。 我不知道这样的包是否存在。

为什么只读打开一个命名pipe道块?

在使用Python处理各种UNIX(Linux,FreeBSD和MacOS X)命名pipe道(FIFOs)时,我注意到了一些奇怪的地方。 第一个,也许是最烦人的是试图打开一个空/空闲的FIFO只读将阻塞(除非我使用os.O_NONBLOCK与os.open()调用较低级别)。 但是,如果我打开它的读/写,那么我没有阻止。 例子: f = open('./myfifo', 'r') # Blocks unless data is already in the pipe f = os.open('./myfifo', os.O_RDONLY) # ditto # Contrast to: f = open('./myfifo', 'w+') # does NOT block f = os.open('./myfifo', os.O_RDWR) # ditto f = os.open('./myfifo', os.O_RDONLY|os.O_NONBLOCK) # ditto 我只是好奇,为什么。 为什么打开的调用块,而不是一些后续的读取操作? 另外我注意到一个非阻塞文件描述符可以在Python中performance出不同的行为。 在os.open()和os.O_NONBLOCK用于初始打开操作的情况下,如果文件描述符中的数据没有准备好, os.read()似乎会返回一个空string。 但是,如果我使用fcntl.fcnt(f.fileno(), fcntl.F_SETFL, fcntl.GETFL […]

我应该使用哪一个STL容器作为FIFO?

哪个STL容器最适合我的需求? 我基本上有一个10个元素的容器,在这个容器中我不断push_back新元素,同时pop_front最老的元素(大约一百万次)。 我目前正在使用一个std::deque的任务,但想知道如果一个std::list将更有效,因为我不需要重新分配自己(或者我误解std::deque std::vector ?)。 还是有一个更有效的容器,我的需要? PS我不需要随机访问

固定大小的队列,在新的enques时自动出列旧值

我正在使用ConcurrentQueue共享数据结构,目的是持有传递给它的最后N个对象(种类的历史)。 假设我们有一个浏览器,我们想要有最后100个浏览的Url。 我想要一个队列,当容量变满(历史logging为100个地址)时,在插入新条目(入队)时自动删除(出队)最早的(第一个)入口。 我怎样才能做到这一点使用System.Collections ?