将一次性超时计时器关联到sqlite表中的一行

时间:2013-05-12 10:34:27

标签: c linux sqlite timer

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

它有3列/字段:

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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