c - 将一次性超时计时器与 sqlite 表中的一行关联

标签 c linux sqlite timer

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

它有 3 列/字段:

1 IP/端口对,2 FIFO 队列指针,3 进程 ID 或线程 ID

我现在对sqlite不太熟悉,如果我创建一个sqlite表,是否可以:

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

如果有的话,有类似的源码吗?谢谢!

最佳答案

数据库用于持久存储。使用程序存储器作为临时存储器,而不是从数据库中添加然后删除。您可以通过四个步骤来中断流程:

  1. 将主线程中要完成的对象放入队列中。
  2. 触发或通知应填充缺失字段的线程。工作线程将从队列中读取和修改对象,并在 1s 后终止。
  3. 在主线程中,等待1s(或等待工作线程完成)。
  4. 从主线程检查队列内的对象:如果工作线程设法填充缺失的字段,则将队列中的对象提交到数据库。否则,将它们从队列中丢弃。

当然,您需要一个线程安全队列。引用this Stackoverflow answer .

关于c - 将一次性超时计时器与 sqlite 表中的一行关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16506465/

相关文章:

java - JVM 信号链 SIGPIPE

multithreading - 在不同平台上使用 sqlite 和文件锁定是否存在已知问题?

android - 如何将解析的 JSON 保存到 SQLite Android

objective-c - C 或 Objective-C 等效于 Java 的 Integer.toOctalString()?

c - 在 while 循环中使用 strcpy,C

c - 如何使用位图二维数组存储图的邻接矩阵

c - 坚持在框架窗口上实现边界检查以进行均值过滤

linux - 如何在linux bash或python中检查两个文件是否在同一物理硬盘中?

比较文本文件中的字符串的一行,并在找到时删除该行

android - 在 SQLite 表中获取新添加的行