摘要: 条件变量是用于线程间同步的一种机制,它允许一个或多个线程在某个条件满足之前等待,并在条件满足时通知等待的线程继续执行。以下是条件变量的基本使用方法,包括 notify_one 和 notify_all 的作用。 使用条件变量的基本步骤 创建条件变量和互斥量:首先需要创建一个 std::conditi 阅读全文
posted @ 2024-10-07 20:34 牛马chen 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 线程池是一种用于管理和复用线程的技术,主要目的是提高系统性能和资源利用率。 它通过预先创建一定数量的线程,并将它们保存在线程池中,当需要执行任务时,从线程池中获取一个空闲的线程来执行任务,而不是每次都创建新的线程¹²。 线程池的工作原理 线程池初始化:在应用程序启动时,线程池会创建一定数量的线程,这 阅读全文
posted @ 2024-10-07 19:55 牛马chen 阅读(111) 评论(0) 推荐(0) 编辑
摘要: std::packaged_task 概述 std::packaged_task 是 C++11 引入的标准库模板类,用于包装一个可调用对象(如函数、lambda 表达式、函数对象等),使其能够与 std::future 协同工作。 简单来说,它将一个任务(可调用对象)包装起来,并允许你获取该任务的 阅读全文
posted @ 2024-10-07 12:03 牛马chen 阅读(79) 评论(0) 推荐(0) 编辑
摘要: std::future 相比于直接使用线程在 C++ 中有几个重要的优势,主要体现在同步结果获取、简化代码管理、以及更安全的异步任务管理等方面。以下是 std::future 的一些主要优势: 1. 自动结果获取与同步 std::future 提供了一种便捷的机制来获取异步任务的返回值。当我们使用线 阅读全文
posted @ 2024-10-07 11:58 牛马chen 阅读(268) 评论(0) 推荐(5) 编辑
摘要: std::make_shared 是 C++11 引入的一个标准库函数,用于创建一个 std::shared_ptr,并在堆上分配所需的对象。 它的功能是将对象的创建和 shared_ptr 的初始化合并在一起,提高了效率和安全性。 使用方法: auto ptr = std::make_shared 阅读全文
posted @ 2024-10-07 11:54 牛马chen 阅读(479) 评论(0) 推荐(1) 编辑
摘要: 在C++中的可变模板参数使用省略号 ... 来表示一个参数包(Parameter Pack),其具体位置决定了这个包是模板参数包还是函数参数包,以及如何进行参数展开。 1. 模板参数包:c... Args 省略号放在类型名称的右边,用来表示模板参数包,即可以接受任意数量的模板类型参数。 templa 阅读全文
posted @ 2024-10-07 11:37 牛马chen 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 在C++模板编程中,完美转发(Perfect Forwarding)是一种技术,旨在保留函数参数的值类别,即在将参数传递到另一个函数时,无论参数是左值还是右值,都能够保持它的原始性质,而不会因为转发丢失性能或引入不必要的拷贝。 完美转发的关键在于通过模板的转发引用(Forwarding Refere 阅读全文
posted @ 2024-10-07 11:18 牛马chen 阅读(14) 评论(0) 推荐(0) 编辑