多线程
文章平均质量分 59
Mister Zhu
云在青天水在瓶
展开
-
【多线程】join()和detach()的用法
join()函数的作用是让主线程的等待该子线程完成,然后主线程再继续执行。这种情况下,子线程可以安全的访问主线程中的资源。子线程结束后由主线程负责回收子线程资源。一个子线程只能调用join()和detach()中的一个,且只允许调用一次。可以调用joinable()来判断是否可以成功调用join()或detach()。对于不会停止的线程,不要使用join(),因为该线程调用join()后就阻塞了其他所有线程(包括主线程),只有等到你这个线程结束后,其他线程才会继续运行,以及执行join()调用位置后面的原创 2021-11-10 19:07:41 · 1303 阅读 · 0 评论 -
【多线程】std::unique_lock和std::lock_guard用法
浅谈ROS的产品化探索(一)——通信机制篇文章来源:企鹅号 - 古月居近几年,机器人和人工智能繁荣发展,曾经运行在实验室的机器人已经逐渐走入千家万户的生活。作为机器人开发利器的ROS也得到了非常广泛的应用,成为机器人领域的普遍标准。ROS原本针对科研领域的PR2机器人开发,这种大繁荣的景象远远超过ROS的最初目标,也使得ROS的缺陷在广泛应用的同时暴露无遗:1. 缺乏构建多机器人系统的标准方法;2. 在Windows、MacOS、RTOS等系统上无法应用或者功能有限;3. 缺少实时性方面的设计;4. 需要良转载 2021-06-24 21:48:43 · 278 阅读 · 0 评论 -
【多线程/C++】阻塞队列的C++多线程 实现 BlockingQueue
阻塞队列实现:当队列为空时,从队列获取元素的操作将会被阻塞,直到队列中被放入了元素;当队列满时,有两种方案:方案1: 往队列里存放元素的操作也会被阻塞,直到有元素被从队列中取出或者删除。具体方法:定义一个条件变量std::condition_variable not_full_;在存放操作时,判断队列为满时,使用not_full_.wait(lock)阻塞线程;当进行删除队列元素的操作后,就使用not_full_.notify_all()来唤醒not_full_.wait(lock)原创 2021-06-23 15:34:36 · 2828 阅读 · 1 评论 -
【多线程】多线程锁住的是什么、std::lock_guard<std::mutex> locker(mutex_)
通常不直接使用 mutex, lock_guard 更加安全, 更加方便。 lock_guard简化了 lock/unlock 的写法, lock_guard 在构造时自动锁定互斥量, 而在退出作用域时会析构自动解锁, 保证了上锁解锁的正确操作, 正是典型的 RAII 机制 #include <thread>#include <mutex>std::mutex myLock;void func() { { std::lock_guard<st原创 2021-06-24 13:36:57 · 5626 阅读 · 1 评论 -
【多线程】C++11进行多线程开发 (std::thread)
文章目录 创建线程std::thread 类使用join()使用 detach() 警惕作用域线程不能复制给线程传参传递指针传递引用 以类成员函数为线程函数以容器存放线程对象互斥量std::mutexstd::lock_guard 条件变量call_once 创建线程 C++11 增加了线程以及线程相关的类, 而之前并没有对并发编程提供语言级别的支持 std::thread 类 使用 std::thread 类来创建线程, 我们需要提供的只是线程函数, 或者线程对象, 同时..转载 2021-06-24 11:17:28 · 1366 阅读 · 0 评论 -
【多线程】1.条件变量--std::condition_variable
条件变量允许我们通过通知进而实现线程同步。 因此,您可以实现发送方/接收方或生产者/消费者之类的工作流。 在这样的工作流程中,接收者正在等待发送者的通知。如果接收者收到通知,它将继续工作。 1. std::condition_variable 条件变量可以履行发送者或接收者的角色。 作为发送者,它可以通知一个或多个接收者。 这就是使用条件变量所需要知道的基本所有内容,程序示例: // conditionVariable.cpp#include <iostream>转载 2021-05-31 20:52:24 · 315 阅读 · 0 评论 -
【多线程】0.理解一下5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO
5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO看了一些文章,发现有很多不同的理解,可能是因为大家入切的角度、环境不一样。所以,我们先说明基本的IO操作及环境。本文是在《UNIX网络编程 卷1:套接字联网API》6.2节"I/O 模型 "的基础上,即UNIX/LINUX环境下的网络 IO环境下的理解,它里面给出的例子是读取(接收)网络UDP数据。下面简单写写自己对这些IO模型的理解。1、IOIO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整转载 2021-04-29 11:31:00 · 668 阅读 · 0 评论 -
多线程 可参考 博主【 lx青萍之末】 的 【C++并发编程 】系列博客
关于多线程 相关知识 可参考博主【 lx青萍之末】 的 【C++并发编程】系列博客https://blog.csdn.net/daaikuaichuan/category_6887432.html原创 2021-04-21 11:18:16 · 157 阅读 · 0 评论