首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在n秒钟后在C中运行一个函数?

如何在n秒钟后在C中运行一个函数?
EN

Stack Overflow用户
提问于 2020-07-07 15:18:07
回答 2查看 149关注 0票数 0

我的项目是创建一个像Memcached这样的程序。该程序是密钥、值和缓存item.Its的过期时间的存储列表,这意味着在n秒钟后将删除数据。我想我可以用struct来存储键和值,但是我不能在n秒钟后删除数据,你能给我一些解决方案吗?谢谢大家

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-07 16:06:30

只是懒洋洋地删除。

您不需要立即删除过期数据。为了维护数据存储的语义,只需做两件事:

  1. 不将过期数据返回到查询。(但见下文)

  1. 不允许数据存储填充过期数据。

换句话说,当您碰巧遇到过期的数据时,删除它就足够了,这要么是因为它显示为对查询的响应,要么是因为它占用了存储更新所需的一个插槽。

为了简化对过期数据的检测,您应该将实际的过期时间存储在结构中,而不是保存的时间。然后很容易看出密钥/值对是否已过期:您只需将过期时间与当前时间进行比较即可。

如果使用链式哈希,则可以在搜索该链时编辑哈希链(通过删除过期项)。如果使用开放寻址,则可以用墓碑替换过期条目(也可以将“过期”用作墓碑)。在这两种情况下,如果您找到要查找的键,但条目已过期,则可以终止搜索,如果是查询,则返回"key not“,或者如果是更新,则用新数据覆盖数据(和过期时间)。

注意:

  1. 数据存储不能真正保证过期数据永远不会返回,因为它不控制响应的网络延迟。很有可能它返回的数据在从服务器发送时还没有过期,但是在到达客户端时已经过期了。因此,数据存储只能提供“最大的努力”,这取决于客户机是否使用返回的数据(服务器返回过期时间以及数据作为对查询的响应是很重要的)。

由于客户必须检查到期时间,因此,如果数据存储仅在更新条目时检查过期日期,则不会在技术上明确违反合同。但是,由于不发送绝对过期的数据的成本非常低,因此几乎不值得担心,因此,包含签入查询和更新似乎是合理的。

票数 1
EN

Stack Overflow用户

发布于 2020-07-07 15:22:28

用计时器怎么样?

您可以使用time.h中的time_t结构和clock()函数。

使用time_t将开始时间存储在clock()结构中,并通过比较存储时间和当前时间之间的差异来检查运行时间。

解释了Here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62778517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档