问题标签 [circular-buffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
476 浏览

java - 如何实现 RingFiFoBuffer

我是 Java 编程新手。我有几个关于如何实现 RingFiFoBuffer 的问题:

  1. 我可以将大的 XML 文件存储到这个缓冲区中吗?如果是的话有多大?
  2. 多个线程可以同时从 RingBuffer 插入/删除/获取记录吗?
  3. 我可以存储多少条记录?
  4. 是否有任何教程可以让我看到如何编写代码。

我只找到http://commons.apache.org/collections/apidocs/org/apache/commons/collections/buffer/CircularFifoBuffer.html

0 投票
1 回答
1956 浏览

android - 循环缓冲区的线程安全

我想确保我的循环缓冲区是线程安全的。我正在使用缓冲区来存储通过蓝牙流式传输的数据,同时我正在使用另一个线程来删除数据并在本地存储在 android 设备中。

这是我目前CircularBuffer使用Semaphore的 . synchronized是否可以通过简单地添加到每个方法来使其成为线程证明?那将是我的首选方法。

0 投票
1 回答
1376 浏览

c++ - c ++ boost迭代器抛出断言和程序终止

我在这一行收到以下错误:

buffer是类的对象accumlator

在这里,我试图将字节数组转换为短裤。代码抛出此运行时错误并终止。

我已将迭代器初始化为指向缓冲区的开头

并且index是循环缓冲区的迭代器。

boost::cb_details::iterator::reference boost::cb_details::iterator::operator*() const [with Buff = boost::circular_buffer, Traits = boost::cb_details::nonconst_traits >, boost::cb_details:: iterator::reference = char&]: 断言 `m_it != 0' 失败。

我什至将它跟踪到文件 boost/circular_buffer/detail.hpp

断言条件检查 - 迭代器是否指向结束。如果它指向结束,那么它会抛出断言。

提前致谢。

0 投票
3 回答
6317 浏览

c++ - 如何实现 cv::Mat 对象(OpenCV)的循环缓冲区?

我正在尝试为我的程序实现一个循环缓冲区。缓冲区用于在两个线程之间共享数据,如下所示。我使用 OpenCV 从相机中抓取视频帧(线程 1)。然后我想将这些数据存储在一个循环缓冲区中,以便线程 2 可以从缓冲区中获取数据。

在此处输入图像描述

如何cv::Mat在 C++ 中为对象实现循环缓冲区?我知道如何为标准 C++ 对象(如intor char)创建循环缓冲区,但我无法使其与类型的对象一起使用cv::Mat

有什么建议么?

0 投票
5 回答
33640 浏览

c++ - 高效循环列表

我想要一个简单而高效的循环缓冲区/队列。如果我使用std::vector,我必须这样做:

有没有更简单的解决方案?

0 投票
2 回答
16445 浏览

linux - 如何在 linux 内核空间中读取环形缓冲区?

我正在编写一个可以在用户空间打印系统日志的 Linux 字符驱动程序。就像命令“dmesg”一样。我了解到,我们使用“printk”打印的所有日志都将被发送到一个名为环形缓冲区的空间。所以我有以下问题:

  1. 环形缓冲区是否在内核空间内?
  2. 如果是这样,我如何读取内核空间内的环形缓冲区?(我试图阅读 dmesg.c 的源代码。但它没有帮助。)
0 投票
3 回答
1583 浏览

c - 循环 FIFO 缓冲区使用

我想在 C 中实现循环 FIFO 缓冲区。当我在 Google 上搜索代码示例时,我找到了这个链接。我不明白这是否意味着循环FIFO缓冲区的概念已获得专利,每个想要使用它的人都必须有许可证?

最良好的祝愿

0 投票
3 回答
473 浏览

java - 切换到循环列表以更轻松地转移

我有一个私有数组列表,其中包含两个 long、一个浮点数和一个 BigDecimal 类。随着新数据的到来,我目前正在删除最旧的元素,将所有其他元素移过来,然后添加最新的元素。我认为这会不必要地占用大量内存。那么有没有办法把它变成一个圆圈,所以我不需要移动数组中的元素?

我将在下面包含我的代码的相关部分:

0 投票
5 回答
13449 浏览

c - 提高 C 循环缓冲区效率

我需要一些帮助来提高我的循环缓冲区代码的效率。

我查看了stackoverflow,发现(几乎)所有关于循环缓冲区的主题都是关于这种缓冲区的使用或循环缓冲区的基本实现。我真的需要有关如何使其超级高效的信息。

计划是将此缓冲器与具有单精度 FPU 的 STM32F4 微控制器一起使用。我计划大量使用 write() 和 readn() 函数。我们实际上是在说每秒几百万次调用,所以在这里减少几个时钟周期,真的会有所作为。

我将在这里放最重要的代码,完整的缓冲区代码可通过http://dl.dropbox.com/u/39710897/circular%20buffer.rar 获得

谁能给我一些关于如何提高这个缓冲区效率的建议?

0 投票
1 回答
2687 浏览

c - Recv ring buffer vs simple buffer

I'm working on a client-server app. My app is working with variable size packets, each packet has a header and a payload of variable length.

My dilemma is what is the best approach for handing the packets when doing recv. Most of the tutorials I've came across suggest using a ring buffer but as far as I can tell it's more efficient to use a buffer whose size is twice the size of the biggest packet you can handle.

If I use a ring buffer I need an additional buffer for recv and then I need to copy the buffer in the ring buffer which means I need to do one or two memcpys to insert the buffer in the ring buffer

If I use the single buffer approach I only need one buffer which I can pass to recv call and a memmove call to move data to the start of the buffer when I got a full packet and there still is data belonging to another packet in the buffer.

Am I getting something wrong ?

PS. If you can point me to any source code/example where variable length packets are handled that would be helpful.