gpt4 book ai didi

c++ - Boost:如何处理时间相关的线程操作?

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

例如,有一个数组或读取器线程和一个写入器线程,我们可以 sinc tham like this via shared_mutex and shared_lock如果我们不依赖于时间,这是可行的。但是,如果我们想在特定时间范围内完成所有写入操作,并且如果没有完成,请停止等待并开始在读取器线程内执行其他操作。如何做这样的事情?如何能够从一些观察者线程向所有读者线程说 - “嘿伙计们 - 在这个时间范围内不会有来自作者的任何新数据,所以继续。”

最佳答案

使用定时锁。

boost::shared_mutex  m

Reader()
shared_lock lock(m, timeout);
if(!lock) {
//I don't have the lock. Don't touch the resource and do something else.
}
else {
//I have the lock. Read now.
}

Writer()
upgrade_lock lck(m);
upgrade_to_unique_lock uniqueLock(lck);

只需选择一个超时值。请注意,它不一定是精确的。

顺便说一句:如果你打算使用 Boost.Threads,也许你应该 read the documentation .它非常广泛。我从未使用过 Boost.Threads,我花了几秒钟才找到它。

关于c++ - Boost:如何处理时间相关的线程操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202311/

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