知方号

知方号

std::try

std::try

  C++ 语言 标准库头文件 自立与有宿主实现 具名要求 语言支持库 概念库 (C++20) 诊断库 工具库 字符串库 容器库 迭代器库 范围库 (C++20) 算法库 数值库 本地化库 输入/输出库 文件系统库 (C++17) 正则表达式库 (C++11) 原子操作库 (C++11) 线程支持库 (C++11) 技术规范  线程支持库 线程thread(C++11)jthread(C++20)stop_token(C++20)stop_source(C++20)stop_callback(C++20)hardware_destructive_interference_sizehardware_constructive_interference_size(C++17)(C++17) this_thread 命名空间get_id(C++11)yield(C++11)sleep_for(C++11)sleep_until(C++11) 互斥mutex(C++11)recursive_mutex(C++11)shared_mutex(C++17)timed_mutex(C++11)recursive_timed_mutex(C++11)shared_timed_mutex(C++14) 通用锁管理lock_guard(C++11)scoped_lock(C++17)unique_lock(C++11)shared_lock(C++14)defer_lock_ttry_to_lock_tadopt_lock_t(C++11)(C++11)(C++11)lock(C++11)try_lock(C++11)defer_locktry_to_lockadopt_lock(C++11)(C++11)(C++11)once_flag(C++11)call_once(C++11) 条件变量condition_variable(C++11)condition_variable_any(C++11)notify_all_at_thread_exit(C++11)cv_status(C++11) 信号量counting_semaphorebinary_semaphore(C++20)(C++20) 闩与屏障latch(C++20)barrier(C++20) futurepromise(C++11)future(C++11)shared_future(C++11)packaged_task(C++11)async(C++11)launch(C++11)future_status(C++11)future_error(C++11)future_category(C++11)future_errc(C++11)  定义于头文件 templateint try_lock( Lockable1& lock1, Lockable2& lock2, LockableN&... lockn); (C++11 起)

尝试锁定每个给定的可锁定 (Lockable) 对象 lock1 、 lock2 、 ... 、 lockn ,通过以从头开始的顺序调用 try_lock 。

若调用 try_lock 失败,则不再进一步调用 try_lock ,并对任何已锁对象调用 unlock ,返回锁定失败对象的 0 底下标。

若调用 try_lock 抛出异常,则在重抛前对任何已锁对象调用 unlock 。

参数 lock1, lock2, ... , lockn - 要锁定的可锁定 (Lockable) 对象返回值

成功时为 -1 ,否则为锁定失败对象的 0 底下标值。

示例

下列示例用 std::try_lock 周期地记录并重置运行于分离线程的计数器。

运行此代码#include #include #include #include #include #include  int main(){ int foo_count = 0; std::mutex foo_count_mutex; int bar_count = 0; std::mutex bar_count_mutex; int overall_count = 0; bool done = false; std::mutex done_mutex;  auto increment = [](int &counter, std::mutex &m, const char *desc) { for (int i = 0; i

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。