gpt4 book ai didi

c++ - P线程超时

转载 作者:太空狗 更新时间:2023-10-29 12:06:09 25 4
gpt4 key购买 nike

我要做的就是启动一个线程并查看它是否在特定时间段内完成。

操作系统:Linux;语言:C++。

我不想使用不可移植的函数(如 this answer 中所建议的)。

除了使用互斥量和条件变量(建议 here )?两个线程之间没有共享数据,所以从技术上讲我不需要互斥锁。我想要的只是,对于启动线程的函数,如果

  • 线程已经结束或者

  • 一段时间过去了。

...并尽可能保持代码简单。

最佳答案

如果你想使用 boost::thread,“通常的”bool 标志、条件变量、互斥量方法非常简单:

bool ready = false;
boost::mutex mutex;
boost::condition_variable cv;

// function to be executed by your thread
void foo()
{
// lengthy calculation
boost::mutex::scoped_lock lock( mutex );
ready = true;
cv.notify_one();
}

// will return, if the thread stopped
bool wait_for_foo( time_point abs_time )
{
boost::mutex::scoped_lock lock( mutex );

while ( !ready && cv.wait_until( lock, abs_time ) != cv_status::no_timeout )
;

return ready;
}

好的,使用 posix 并不简单 ;-)

关于c++ - P线程超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541733/

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