gpt4 book ai didi

c++ - 在多线程应用程序中,我将如何使用原子内置函数来设置/查看 time_t 值?

转载 作者:行者123 更新时间:2023-11-30 02:09:51 26 4
gpt4 key购买 nike

我有一个高度线程化的应用。

此应用程序中的线程从共享内存映射文件中读取。您可以假设他们从不写信给它。

现在我需要做的是扩展它,以便当读者完成从文件中读取时,它将更新共享时间戳。即 time_t last_access_time = time(NULL);

这种情况经常发生,如果可能的话,我宁愿搜索无锁实现。

我将如何使用 G++ 中的原子内置函数设置或检查 last_access_time 的当前值?

例如假设我有这些类成员并且 _last_access_time 被初始化为 time(NULL)

time_t _last_access_time;

void UpdateLastAccessTime(){
_last_access_time = time(NULL);
}

void GetLastAccessTime(){
return _last_access_time;
}

有没有可能让它自由锁定?

最佳答案

class SomeClass
{
public:
inline
SomeClass ()
: m_lastAccessTime (0)
{ ; }

inline void
UpdateLastAccessTime ()
{
time_t crtTime = time (NULL);
time_t lastTime = m_lastAccessTime;

while (crtTime > lastTime)
{
lastTime = __sync_val_compare_and_swap (
&m_lastAccessTime,
lastTime,
crtTime);
}
}

inline time_t
GetLastAccessTime () const
{
return m_lastAccessTime;
}

private:
volatile time_t m_lastAccessTime;
};

关于c++ - 在多线程应用程序中,我将如何使用原子内置函数来设置/查看 time_t 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5049413/

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