C++ 具有时滞的简单输入输出

C++ 具有时滞的简单输入输出,c++,C++,假设我有一个输入信号,可以是一个随机双精度: while(true){ double t; // = current time, let's assume I know that double input = rand(); } 我想生成一个输出信号,它只应用0.5秒的时间延迟(信号处理术语中的死区时间为0.5秒) 我正在考虑将输入存储在一个向量中,同时在另一个向量中存储一个时间戳,然后查找output=input(0.5秒前)。然而,这似乎效率很低 对于这类问题,什么是合适的数据结构

假设我有一个输入信号,可以是一个随机双精度:

while(true){
  double t; // = current time, let's assume I know that
  double input = rand();
}
我想生成一个输出信号,它只应用0.5秒的时间延迟(信号处理术语中的死区时间为0.5秒)

我正在考虑将输入存储在一个向量中,同时在另一个向量中存储一个时间戳,然后查找output=input(0.5秒前)。然而,这似乎效率很低


对于这类问题,什么是合适的数据结构?(一个缓冲区,让我回忆起0.5秒前存储的值,并丢弃过去比所选时间延迟更远的记录值)

立即想到的是


让生产者将输入推送到
std::queue
,每0.5秒(使用
std::thread
)让消费者从中弹出。

用于存储数据的结构应该有一个时间戳(到期或排队的时刻)和双精度值

存储结构的数据结构应该是优先级队列(按时间戳排序)

使用者线程应休眠n毫秒,其中n初始化为500毫秒

当消费者弹出第一个项目时,它可以检查第二个项目并计算n(下一次迭代的睡眠时间)。否则它可以再睡500毫秒


让我知道我是否应该为它编写代码。

输入发生的频率和速度如何?在输入连续发生时,while中的每个周期(true)表示歉意,如果我没有准确描述问题,输入和输出连续发生,while中的每个周期都会出现。我只想让输出延迟0.5秒抱歉,如果我没有准确描述问题,输入和输出会连续出现,在while look中的每个周期。我只希望输出延迟0.5秒。
while(true){
  double input = rand();
  // in pseudocode double output(t) = input(t-0.5)
}