![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
#多线程编程
文章平均质量分 95
主要涉及C++多线程编程方面的,比如,线程创建,线程同步等等
流星雨爱编程
记录工作的日常,心得体会
展开
-
异步编程之std::future(一): 使用
std::future是 C++11 标准库中引入的一个非常重要的特性,它提供了一种机制来访问异步操作的结果。当你启动一个异步操作(比如,通过std::async、std::packaged_task、std::promise等)时,你可以立即获得一个std::future对象,这个对象将在异步操作完成时持有操作的结果。原创 2024-08-02 23:18:41 · 819 阅读 · 19 评论 -
深入理解C++中的锁
C++标准库提供了多种类型的互斥锁,每种锁都有其特定的用途和特点。选择合适的互斥锁类型可以有效提高程序的并发性能和安全性。C++惯用法之RAII思想: 资源管理_raii 思想-CSDN博客。原创 2024-07-02 23:15:03 · 1435 阅读 · 9 评论 -
C++之thread_local变量
thread_local 是 C++11 为线程安全引进的变量声明符。表示对象的生命周期属于线程存储期。线程局部存储(Thread Local Storage,TLS)是一种存储期(storage duration),对象的存储是在线程开始时分配,线程结束时回收,每个线程有该对象自己的实例;如果类的成员函数内定义了 thread_local 变量,则对于同一个线程内的该类的多个对象都会共享一个变量实例,并且只会在第一次执行这个成员函数时初始化这个变量实例。原创 2024-06-21 20:14:14 · 1600 阅读 · 15 评论 -
有了std::thread,为什么还需要引入std::jthread?
C++11以来提供了C++原生的多线程std::thread,这极大的方便了多线程的书写。在此之前书写多线程时需要平台原生API,这对于跨平台尤其是跨多平台程序来讲,多线程部分代码书写及维护都是极大的工作量。}};运行如上代码时,会出现崩溃,堆栈信息如下:由如上堆栈信息可知,崩溃原因为std::thread在析构时,如果对象仍为joinable状态,则会触发中断,为避免崩溃需要在std::thread析构器前需要将其置于非joinable状态,即需要主动调用join或detach接口。原创 2024-03-20 15:58:04 · 1231 阅读 · 15 评论 -
std::thread使用及实现原理精讲(全)
线程创建和销毁是昂贵的操作,应尽量避免频繁创建和销毁线程。线程间共享数据时,要确保数据访问的线程安全性。尽量避免在多个线程中访问和修改全局变量或静态变量,除非这些变量是线程安全的。使用 std::thread 时,要确保在程序结束前对所有线程调用 join() 或 detach(),以避免资源泄漏。总之,std::thread 为 C++ 提供了强大而灵活的多线程支持,使得开发者能够更容易地编写并行程序。然而,多线程编程也带来了额外的复杂性和挑战,需要开发者仔细考虑线程间的数据共享和同步问题。原创 2024-03-22 22:44:41 · 3064 阅读 · 3 评论 -
C++11原子操作
C++原子操作提供了一种高效、安全的多线程数据访问方式,在性能和安全性方面具有显著优势。通过合理使用std::atomic类和内存序选项,开发者可以编写出高效、可靠的多线程程序。原创 2024-06-06 23:12:37 · 1502 阅读 · 20 评论