在sqlite表中为一行关联一个一次性超时计时器



我想在我的程序(linux C)中构建一个sqlite表:

它有3列/字段:

1 ip/port对,2 FIFO队列指针,3进程id或线程id

我现在不熟悉sqlite,如果我创建一个sqlite表,是可能的:

当一行插入到sqlite表中时,会启动一个一次性超时定时器,如果在超时时间内没有发生预期的事件(当创建行时,第三个字段为空,它等待进程或线程填充第三个字段),则删除该行。超时计时器是一次性的,因此它只在将行插入表后使用一次。

如果有,是否有类似的源代码?谢谢!

数据库是用于持久存储的。使用程序内存作为临时存储,而不是在数据库中添加然后删除。您可以将此过程分为四个步骤:

  1. 从主线程将待完成的对象放入队列。
  2. 触发或通知应该填充缺失字段的线程。工作线程将从队列中读取和修改对象,也将在15秒后终止。
  3. 在主线程中,等待15秒(或等待工作线程完成)。
  4. 从主线程检查队列中的对象:如果工作线程设法填充了缺失的字段,则将队列中的对象提交到数据库。否则,从队列中丢弃它们。
当然,你需要一个线程安全的队列。参考这个Stackoverflow的答案

相关内容

最新更新