wait_for返回值
时间: 2023-08-13 07:05:20 浏览: 156
wait_for()函数返回一个std::future_status枚举类型的值,表示future对象的状态。这个枚举类型有三个值:ready、timeout和deferred。\[2\]ready表示future对象已经准备好并且可以通过get()获取结果,timeout表示等待超时,deferred表示延迟执行,当std::async()第一个参数为std::launch::deferred时生效。\[1\]
#### 引用[.reference_title]
- *1* *2* *3* [关于std::future成员函数wait_for()](https://blog.csdn.net/weixin_45983489/article/details/123294507)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
_cv.wait_for
`_cv.wait_for`通常是在多线程编程中使用的成员函数,它来自`std::condition_variable`,这是一个标准库模板,用于协调线程之间的同步。`wait_for`函数允许一个等待线程在其条件变量上等待,直到指定的时间条件满足或被其他线程唤醒。
这个函数的基本语法是:
```cpp
template <class Rep, class Period>
bool cv.wait_for(
unique_lock<mutex>& lock,
duration<Rep, Period> rel_time
);
```
其中:
- `lock`是一个`unique_lock`类型的引用,通常用于锁住共享资源,确保线程安全。
- `rel_time`是一个`std::chrono`时间间隔,可以是相对时间(比如`std::chrono::seconds(5)`表示等待5秒),或者是`std::chrono::duration`类型的绝对时间。
函数返回值是布尔类型,如果在指定的时间内条件未被满足并且没有被中断(如通过`notify_one`或`notify_all`唤醒),则返回`false`;反之,如果条件满足或超时,则返回`true`。
使用`_cv.wait_for`时需要注意配合`notify_one`或`notify_all`一起使用,以便线程间有效协作。
wait_for_completion_interruptible_timeout原型
`wait_for_completion_interruptible_timeout` 函数的原型如下:
```c
unsigned long wait_for_completion_interruptible_timeout(struct completion *x, unsigned long timeout);
```
其中,`struct completion` 是一个内核同步原语,用于等待某个事件的完成。`timeout` 参数表示等待超时的时间,单位为 jiffies。函数返回值表示等待的结果,如果返回值大于等于0,则表示等待的时间,如果返回值小于0,则表示等待过程中被信号打断。
阅读全文