CPP
文章平均质量分 53
事了拂喵去Arman
编程尚未成功,同志仍需努力
展开
-
C++ Vector容器的详细指南
C++的vector容器提供了一种高效、灵活的序列存储方式。理解其内部实现机制以及正确使用方法,可以显著提升程序的性能和可靠性。在需要频繁插入和删除操作时,合理利用vector的容量管理特性,并通过预先分配内存来减少性能开销,是非常重要的优化手段。原创 2024-07-28 10:26:16 · 400 阅读 · 0 评论 -
C++中的atomic:原子
原子操作是指在多线程环境下,不可分割的操作,即在进行操作时不会被其他线程打断。原子操作是一种以单个事务来执行的操作,其他线程只能看到操作完成前或者完成后的资源状态,不存在中间状态可视。从底层来看,原子操作是一些硬件指令,其原子性由硬件保证,C++11 对原子操作进行了抽象,提供了统一的接口,避免使用时嵌入平台相关的代码来支持跨平台使用。提供了一种高效、安全的方式来处理多线程环境中的共享数据。通过利用底层硬件的原子操作指令,可以避免使用互斥锁,从而提高性能,并减少死锁的风险。在编写高并发应用程序时,合理使用。原创 2024-07-20 10:51:51 · 802 阅读 · 0 评论 -
C++中的memory_order
是最弱的内存序,仅保证原子操作的原子性,但不保证操作的顺序。使用场景:适用于对操作顺序不敏感的场景,仅需要保证单个原子操作的原子性。例如,计数器的增减。优点:性能最高,开销最小。缺点:没有顺序保证,可能导致难以调试的并发问题。选择合适的内存序需要根据具体的应用场景和性能需求来权衡。默认使用最简单直观,但在追求性能的场景中,可以考虑使用更弱的内存序如和。通过合理使用内存序,既可以提高程序性能,又能保证程序的正确性和可靠性。希望这篇博客能帮助你更好地理解和使用C++11的内存模型。原创 2024-07-20 10:43:10 · 341 阅读 · 0 评论 -
C++中的condition_variable:条件变量
在多线程编程中,我们常常需要一个线程等待某个条件的变化,比如等待数据的生成或某个标志位的设置。如果没有条件变量(),线程可能会使用忙等待(不断检查条件是否满足),这会导致 CPU 资源的浪费。条件变量提供了一种高效的等待机制,使线程在等待条件时进入休眠状态,不占用 CPU 资源,当条件满足时被唤醒继续执行。原创 2024-07-15 07:48:33 · 1322 阅读 · 0 评论 -
C++中的Mutex:保护共享资源的利器
Mutex(互斥体)是用于控制资源独占访问的同步原语。当一个线程锁定(lock)mutex时,其他线程对同一mutex的锁定操作会被阻塞,直到第一个线程解锁(unlock)mutex。独占访问:同一时间只允许一个线程锁定。阻塞与非阻塞锁定:lock()阻塞,try_lock()非阻塞。数据保护:防止多个线程同时访问共享资源导致数据竞争。Mutex是多线程编程中保护共享资源的基础工具。通过合理使用不同类型的mutex和工具函数,可以有效防止数据竞争和死锁问题,提高程序的稳定性和性能。原创 2024-07-14 10:37:06 · 271 阅读 · 0 评论 -
C++11中的std::async: 简化并行任务的利器
std::async是C++11标准库中的一个函数,用于异步执行任务,并返回一个std::future对象以获取任务的结果。它提供了一种简单而灵活的方式来创建并行任务,而无需手动管理线程。std::async提供了一种高效且易用的方式来处理并行任务,简化了线程管理、结果同步和异常处理。与std::thread相比,std::async在很多情况下更为便捷,是进行异步编程的强大工具。通过本文的介绍,希望能帮助你更好地理解和使用std::async来编写高效的并行程序。原创 2024-07-14 10:32:40 · 457 阅读 · 0 评论 -
深入理解C++11中的std::packaged_task
std::packaged_task封装的函数的计算结果会通过与之关联的std::future::get获取(可以在其它线程中异步获取)。关联的std::future可以通过std::packaged_task::get_future获取,该方法只能调用一次,多次调用会触发std::future_error异常。和std::function类似,std::packaged_task是一个多态的、能够感知内存分配的容器:存储的可调用目标可以分配到堆上,也可以通过提供的内存分配器定义存储方式。原创 2024-07-14 10:27:34 · 696 阅读 · 0 评论 -
c++ dynamic_cast
【代码】c++ dynamic_cast。原创 2024-07-01 07:49:13 · 144 阅读 · 0 评论 -
C++ 隐式转换
【代码】C++ 隐式转换。原创 2024-06-30 08:41:19 · 125 阅读 · 0 评论 -
c++ std::forward 笔记
请您查看如下代码块,这样方便复制过去直接运行。原创 2024-06-29 10:20:00 · 200 阅读 · 0 评论 -
c++ this
c++ this原创 2023-10-04 12:41:35 · 174 阅读 · 0 评论 -
c++ Reference Collapsing
c++ Reference Collapsing原创 2023-10-04 12:49:32 · 214 阅读 · 0 评论 -
c++ std::move 和 std::forward
c++ std::move 和 std::forward原创 2023-10-03 19:36:58 · 227 阅读 · 0 评论 -
C++ new/delete 与 malloc/free 的区别?
new/delete 与 malloc/free 的区别?原创 2023-08-28 20:17:26 · 120 阅读 · 0 评论 -
C++ 函数指针
C++ 函数指针原创 2023-08-10 15:53:58 · 177 阅读 · 0 评论 -
C++ extern
c++ extern原创 2023-07-13 13:44:16 · 143 阅读 · 0 评论 -
c++ 左值 广义左值 右值 纯右值 将亡值
c++ 左值 广义左值 右值 纯右值 将亡值原创 2023-04-19 17:28:53 · 640 阅读 · 0 评论 -
c++ 工具类TaskProcessor 支持同步、异步、延迟任务
c++ 工具类TaskProcessor 支持同步、异步、延迟任务执行 有点类似android中ThreadHandler的实现原创 2023-04-05 11:00:33 · 326 阅读 · 0 评论 -
C++ operator
c++ operator原创 2023-03-02 09:33:09 · 411 阅读 · 0 评论 -
c++ default delete
c++ default delete原创 2023-02-11 08:30:00 · 136 阅读 · 0 评论 -
c++ virtual
c++ virtual原创 2023-02-11 08:00:00 · 82 阅读 · 0 评论 -
c++ enum class
c++ enum class原创 2023-02-05 12:45:07 · 144 阅读 · 0 评论 -
c++ #define
c++ #define原创 2023-02-05 12:43:08 · 118 阅读 · 0 评论 -
c++ explicit
c++ explicit原创 2023-02-05 12:42:48 · 68 阅读 · 0 评论 -
C++ final
c++ final原创 2023-02-05 12:41:34 · 98 阅读 · 0 评论 -
c++ inline
c++ inline总结原创 2023-01-28 11:25:08 · 523 阅读 · 0 评论 -
c++ decltype
c++ decltype总结原创 2023-01-28 11:10:20 · 520 阅读 · 0 评论 -
c++ const
c++ const总结原创 2023-01-28 11:08:51 · 468 阅读 · 0 评论 -
C++ auto
C++ auto相关总结原创 2023-01-28 11:07:45 · 639 阅读 · 0 评论 -
C++ assert
c++ assert相关知识总结转载 2023-01-28 11:06:30 · 860 阅读 · 0 评论