gpt4 book ai didi

c - G-WAN中如何用C实现原子操作

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:21 25 4
gpt4 key购买 nike

我想计算一个网页的浏览量,而我正在使用 G-WAN 和 C。我对它们不是很熟悉。我正在使用 Intel 64 位处理器。我已经搜索了主题,但仍然不知道,有人可以帮助我吗?谢谢。

最佳答案

我对 G-WAN 知​​之甚少。我一直在查看他们的网站,据我所知,它在每个 CPU 上运行一个线程;并且您的 C 代码只加载一次,然后在每次需要时在 G-WAN 线程的上下文中执行。在这种情况下,您应该能够使用普通原子(例如,适合 C 原子操作的库,或者如果找不到适合 C 的库,则使用内联汇编)。

问题在于将您的计数器存储在磁盘上(例如,这样它就不会在服务器重新启动时重置为零)。理论上,您只需要在 Web 服务器启动时从磁盘读取一次以前的值,并在服务器停止时将新值写入磁盘一次(或者可能每 30 分钟一次,以防服务器崩溃)。它不是关键路径上的东西(例如,不是每次提供页面时都必须存储/检索的东西)。实际上,我不知道 G-WAN 是否对此有任何支持(或者类似 atexit() 函数的功能是否有效)。

如果 G_WAN 不支持它,您可以使用(例如)受某种互斥锁保护的全局“上次保存状态的时间”变量来绕过它;在哪里(如果未设置)从磁盘加载旧状态并设置全局变量,如果已设置,则使用它来确定自上次保存以来是否已经过去了“X 分钟”。当然,获取互斥量并检查全局变量的开销要比增加计数器的开销大;但它仍然比(例如)使用数据库引擎快几千倍。

关于c - G-WAN中如何用C实现原子操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21127982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com