
线程支持库
文章平均质量分 90
C++ 包含线程、互斥、条件变量和future的内建支持。
繁星璀璨G
单身,求对象
展开
-
c++ 11 原子操作库 (std::atomic)(三)
每个 std::atomic 模板的实例化和全特化定义一个原子类型。若一个线程写入原子对象,同时另一线程从它读取,则行为良好定义(数据竞争的细节见内存模型)。原创 2022-09-21 08:30:00 · 6780 阅读 · 0 评论 -
c++ 11 原子操作库 (std::atomic)(二)
每个 std::atomic 模板的实例化和全特化定义一个原子类型。若一个线程写入原子对象,同时另一线程从它读取,则行为良好定义(数据竞争的细节见内存模型)。原创 2022-09-20 08:30:00 · 4399 阅读 · 0 评论 -
c++ 11 原子操作库 (std::atomic)(一)
每个 std::atomic 模板的实例化和全特化定义一个原子类型。若一个线程写入原子对象,同时另一线程从它读取,则行为良好定义(数据竞争的细节见内存模型)。原创 2022-09-19 08:30:00 · 2588 阅读 · 0 评论 -
c++11 多线程支持 (std::async)
模板函数 async 异步地运行函数 f (潜在地在可能是线程池一部分的分离线程中),并返回最终将保有该函数调用结果的 std::future 。原创 2022-09-03 09:50:20 · 1487 阅读 · 0 评论 -
c++11 多线程支持 (std::shared_future)
类模板 std::shared_future 提供访问异步操作结果的机制,类似 std::future ,除了允许多个线程等候同一共享状态。不同于仅可移动的 std::future (故只有一个实例能指代任何特定的异步结果),std::shared_future 可复制而且多个 shared_future 对象能指代同一共享状态。若每个线程通过其自身的 shared_future 对象副本访问,则从多个线程访问同一共享状态是安全的。原创 2022-09-03 09:09:39 · 1744 阅读 · 0 评论 -
c++ 11 多线程支持 (std::packaged_task)
类模板 std::packaged_task 包装任何可调用 (Callable) 目标(函数、 lambda 表达式、 bind 表达式或其他函数对象),使得能异步调用它。其返回值或所抛异常被存储于能通过 std::future 对象访问的共享状态中。正如 std::function , std::packaged_task 是多态、具分配器的容器:可在堆上或以提供的分配器分配存储的可调用对象原创 2022-09-02 22:30:00 · 1325 阅读 · 0 评论 -
c++ 11 多线程支持 (std::future)
类模板 std::future 提供访问异步操作结果的机制:(通过 std::async 、 std::packaged_task 或 std::promise 创建的)异步操作能提供一个 std::future 对象给该异步操作的创建者。然后,异步操作的创建者能用各种方法查询、等待或从 std::future 提取值。若异步操作仍未提供值,则这些方法可能阻塞。异步操作准备好发送结果给创建者时,它能通过修改链接到创建者的 std::future 的共享状态(例如 std::promise::set_v原创 2022-09-01 23:27:54 · 1826 阅读 · 0 评论 -
c++ 11 线程支持 (std::promise)
类模板 std::promise 提供存储值或异常的设施,之后通过 std::promise 对象所创建的 std::future 对象异步获得结果。注意 std::promise 只应当使用一次。每个 promise 与共享状态关联,共享状态含有一些状态信息和可能仍未求值的结果,它求值为值(可能为 void )或求值为异常。 promise 可以对共享状态做三件事:...原创 2022-08-31 23:05:15 · 1098 阅读 · 0 评论 -
c++ 11 多线程支持 条件变量 (condition_variable_any)(三)
condition_variable_any 类是 std::condition_variable 的泛化。相对于只在 std::unique_lock 上工作的 std::condition_variable , condition_variable_any 能在任何满足 基本可锁定 (BasicLockable) 要求的锁上工作。条件变量语义描述见 std::condition_variable 。类 std::condition_variable_any 是 标准布局类...原创 2022-08-28 19:34:15 · 823 阅读 · 0 评论 -
c++11 多线程支持 条件变量(condition_variable_any)(二)
condition_variable_any 类是 std::condition_variable 的泛化。相对于只在 std::unique_lock 上工作的 std::condition_variable , condition_variable_any 能在任何满足 基本可锁定 (BasicLockable) 要求的锁上工作。条件变量语义描述见 std::condition_variable 。类 std::condition_variable_any 是 标准布局类...原创 2022-08-28 19:23:38 · 548 阅读 · 0 评论 -
c++11 多线程支持 条件变量(condition_variable_any)(一)
condition_variable_any 类是 std::condition_variable 的泛化。相对于只在 std::unique_lock 上工作的 std::condition_variable , condition_variable_any 能在任何满足 基本可锁定 (BasicLockable) 要求的锁上工作。条件变量语义描述见 std::condition_variable 。类 std::condition_variable_any 是 标准布局类......原创 2022-08-28 18:54:30 · 1671 阅读 · 0 评论 -
c++11 多线程支持 条件变量(condition_variable)(三)
条件变量是允许多个线程相互交流的同步原语。它允许一定量的线程等待(可以定时)另一线程的提醒,然后再继续。条件变量始终关联到一个互斥。原创 2022-08-20 10:13:24 · 1091 阅读 · 0 评论 -
c++11 多线程支持 条件变量(condition_variable)(二)
条件变量是允许多个线程相互交流的同步原语。它允许一定量的线程等待(可以定时)另一线程的提醒,然后再继续。条件变量始终关联到一个互斥。原创 2022-08-20 09:42:55 · 512 阅读 · 0 评论 -
c++11 多线程支持 条件变量(condition_variable)(一)
condition_variable 类是同步原语,能用于阻塞一个线程,或同时阻塞多个线程,直至另一线程修改共享变量(条件)并通知 condition_variable 。原创 2022-08-20 09:28:47 · 1025 阅读 · 0 评论 -
C++11 多线程支持-单次调用
准确执行一次可调用 (Callable) 对象 f ,即使同时从多个线程调用。原创 2022-08-20 09:06:23 · 796 阅读 · 0 评论 -
c++ 11 通用互斥管理
类 lock_guard 是互斥封装器,为在作用域块期间占有互斥提供便利 RAII 风格机制。创建 lock_guard 对象时,它试图接收给定互斥的所有权。控制离开创建 lock_guard 对象的作用域时,销毁 lock_guard 并释放互斥。lock_guard 类不可复制。...原创 2022-08-14 11:00:02 · 521 阅读 · 0 评论 -
c++ 11 std::recursive_timed_mutex递归锁定的互斥,并实现有时限锁定
recursive_timed_mutex 是同步原语,能用于保护共享数据免受从多个线程同时访问。以类似 std::recursive_mutex 的方式, recursive_timed_mutex 提供排他性递归所有权语义。另外, recursive_timed_mutex 通过 try_lock_for 与 try_lock_until 方法,提供带时限地试图要求 recursive_timed_mutex 所有权的能力。recursive_timed_mutex 类满足定时互斥体 (Time.原创 2022-08-13 16:41:02 · 948 阅读 · 0 评论 -
c++ 11 recursive_mutex 递归锁
调用方线程在从它成功调用 lock 或 try_lock 开始的时期里占有 recursive_mutex 。此时期间,线程可以进行对 lock 或 try_lock 的附加调用。所有权的时期在线程调用 unlock 匹配次数时结束。线程占有 recursive_mutex 时,若其他所有线程试图要求 recursive_mutex 的所有权,则它们将阻塞(对于调用 lock )或收到 false 返回值(对于调用 try_lock )。可锁定 recursive_mutex 次数的最大值是未指定的,但原创 2022-08-13 16:10:43 · 6047 阅读 · 0 评论 -
c++ std::timed_mutex 有时限锁定
timed_mutex 类是能用于保护数据免受多个线程同时访问的同步原语。以类似 mutex 的行为, timed_mutex 提供排他性非递归所有权语义。另外, timed_mutex 提供通过 try_lock_for() 和 try_lock_until() 方法试图带时限地要求 timed_mutex 所有权的能力。timed_mutex 类满足定时互斥体 (TimedMutex) 与标准布局类型 (StandardLayoutType) 的所有要求。...原创 2022-08-10 22:48:48 · 1962 阅读 · 0 评论 -
c++ std::mutex 多个线程同时访问的同步原语
mutex 类是能用于保护共享数据免受从多个线程同时访问的同步原语。mutex 提供排他性非递归所有权语义:调用方线程从它成功调用 lock 或 try_lock 开始,到它调用 unlock 为止占有 mutex 。线程占有 mutex 时,所有其他线程若试图要求 mutex 的所有权,则将阻塞(对于 lock 的调用)或收到 false 返回值(对于 try_lock ).调用方线程在调用 lock 或 try_lock 前必须不占有 mutex 。...原创 2022-08-07 09:39:16 · 1214 阅读 · 0 评论 -
c++ 11 线程支持库 thread
类 thread 表示单个执行线程。线程允许多个函数同时执行。线程在构造关联的线程对象时立即开始执行(等待任何OS调度延迟),从提供给作为构造函数参数的顶层函数开始。顶层函数的返回值将被忽略,而且若它以抛异常终止,则调用 std::terminate 。顶层函数可以通过 std::promise 或通过修改共享变量(可能需要同步,见 std::mutex 与 std::atomic )将其返回值或异常传递给调用方。...原创 2022-07-30 12:47:56 · 967 阅读 · 0 评论