C++ 并发编程
文章平均质量分 57
C++ 并发编程基础以及进阶使用,使用并发中遇到的问题以及解决方案记录。
专注的罗哈哈
学上一秒
展开
-
c++ binary_semaphore 使用详解
【代码】c++ binary_semaphore 使用详解。原创 2023-11-20 15:53:34 · 668 阅读 · 0 评论 -
c++ call_once 使用详解
头文件。fargs作用:保证可调用对象 f 只被执行一次,即使同时从多个线程调用。原创 2023-11-20 14:01:46 · 698 阅读 · 0 评论 -
c++ shared_mutex 读写锁使用详解
以下示例演示了两个读取线程(reader)以共享模式持有 mutex,并同时读取 shared_data 的值。写入线程(writer)以独占模式持有 mutex,并将 shared_data 的值加一。读取线程可以同时持有锁,而写入线程需要等待读取线程释放锁。原创 2023-11-15 14:08:20 · 519 阅读 · 0 评论 -
c++ barrier 使用详解
一般被用来协调多个线程,在所有线程都到达屏障点之后,才允许它们继续执行,对于需要线程间同步的并行算法和任务来说非常有用原创 2023-11-15 11:40:05 · 723 阅读 · 0 评论 -
c++ latch 使用详解
线程 1 和 线程 2 模拟工作线程,在线程 1 以及 2 工作完成之后,主线程再继续运行。原创 2023-11-14 11:37:42 · 360 阅读 · 0 评论 -
c++ jthread 使用详解
对 std::thread 的改进,旨在提供更好的线程管理和异常处理,除了拥有和 std::thread 完全相同的功能以及 API 之外,还增加了以下功能原创 2023-11-14 11:00:31 · 348 阅读 · 0 评论 -
c++ promise 使用详解
提供了存储值或者异常的机制,一般用于在一个线程中设置值或异常,并在另一个线程中获取这些值或异常原创 2023-11-13 15:23:33 · 478 阅读 · 0 评论 -
c++ packaged task 使用详解
将 future 对象与任何可调用目标(函数、 lambda 表达式、 bind 表达式或其他函数对象)封装为一个异步任务,当执行该任务时(一般为异步执行),会调用内部关联的可调用目标,并将返回值或者调用过程中抛出的异常保存于 future 中,并令 future 准备就绪原创 2023-11-13 14:16:22 · 636 阅读 · 0 评论 -
c++ future 使用详解
头文件。作用:提供了一种机制,可以获取异步任务的执行结果、等待异步任务的完成、检查异步任务的状态等操作。使用:通常情况下,与 std::async,std::promise 和 std::packaged_task 结合使用。原创 2023-11-10 16:03:38 · 424 阅读 · 0 评论 -
c++ async 使用详解,创建异步任务的多种方法
头文件。fargs作用:以异步或者同步的调用可调用对象 f,并可以通过返回的 std::future 对象获取 f 的返回值。原创 2023-11-10 14:55:27 · 1398 阅读 · 0 评论 -
c++ 防范死锁的多种方法
std::lock 可以同时锁住多个互斥,但不会自动解锁,需要配合 std::lock_guard 或者 std::unique_lock 使用,使其能够自动解锁。std::scoped_lock 与 std::lock_guard 完全等价,只不过前者是可变函数模板,可以接收多个互斥。两个线程互相等待互斥锁。使用相同的顺序获取锁。原创 2023-11-07 17:20:13 · 269 阅读 · 0 评论 -
c++ 设置线程调度策略以及优先级
使用 native_handle 方法。错误,使用管理员权限执行即可。原创 2023-11-07 15:30:13 · 750 阅读 · 0 评论 -
c++ 条件变量使用详解 wait_for wait_unitl 虚假唤醒
使当前线程阻塞直至条件变量被通知、抵达指定时间或虚假唤醒发生,可选的循环直至满足 pred。使当前线程阻塞直至条件变量被通知、抵达指定时间或虚假唤醒发生,可选的循环直至满足 pred。使当前线程阻塞直至条件变量被通知,或虚假唤醒发生,可选地循环直至满足 pred。由于操作系统调度或资源争议,此函数可能阻塞长于 rel_time。使用注意:时钟最好使用稳定时钟,即计时速率恒定且无法调整的时钟。线程1修改变量,线程2等待变量被修改。原创 2023-11-06 17:26:59 · 4013 阅读 · 0 评论 -
std lock_guard vs unique_lock 相同点以及不同点
std::lock_guard 提供了一种简单的、固定的锁定机制,适用于大多数情况下简单的互斥访问。而 std::unique_lock 提供了更大的灵活性和更多的功能,例如手动控制锁定和解锁的时机,以及与条件变量的配合使用。因此,在需要更高级的互斥控制或与条件变量一起使用时,std::unique_lock 是更适合的选择。原创 2023-11-06 14:09:35 · 163 阅读 · 0 评论 -
c++ 互斥锁使用详解 lock_guard
【代码】c++ 互斥锁使用详解 lock_guard。原创 2023-11-03 17:18:03 · 338 阅读 · 0 评论 -
c++ 线程使用详解 创建线程的多种方法
函数原型:f:任何可调用对象。args:传递给 f 的参数构造新对象并将它与执行线程关联。原创 2023-11-03 16:22:20 · 1552 阅读 · 0 评论