多线程与多进程
文章平均质量分 93
C++和Linux下多线程多进程的编程
一口三明治3Mz
天下大事,必作于细
展开
-
[C++11] 智能指针
由于C++中没有垃圾清理机制,分配的内存需手动释放,否则就会产生内存泄漏,C++11中引入了智能指针的概念,使用其可以有效解决该问题。智能指针是存储指向动态分配对象指针的类。使用引用计数的技术,使用一次内部引用计数 +1,每析构一次,内部引用计数 -1,减为0时,删除所指向的堆内存。使用智能指针可以确保在离开指针作用域时,自动销毁动态分配的对象,防止内存泄漏。C++11中提供了三种智能指针,包含在中:1. 共享的智能指针:std::shared_ptr。原创 2023-10-23 15:47:25 · 125 阅读 · 1 评论 -
[C++11] 原子变量与原子操作
C++11中增加的官方并发支持库包含了名为的头文件,此文件中定义了原子变量,及其各种类型特化别名等。“原子”指的是,它们组合在一起形成了原子操作(Atomic Operation)。这意味着在执行原子操作时,它要么完全成功,要么完全失败,没有中间状态,保证了操作的完整性。原子拥有的原子性确保了在并发编程中数据的一致性和可靠性。原创 2023-10-08 16:29:33 · 191 阅读 · 1 评论 -
Modern C++线程同步
对于线程而言,除了独占的栈区,程序计数器,运行时使用的寄存器这些线程上下文,剩下的都是线程间的共享资源,也就是说进程地址空间的大部分区域都是对线程共享的。如果不去关注线程同步,就会导致多个线程同时读写数据造成数据不一致甚至引起程序的崩溃。在多线程并发场景下指令执行的先后顺序由内核决定,同一个线程内部指令按照先后顺序执行,但不同线程之间的指令执行先后顺序是不一定的。如果执行结果依赖于不同线程执行的先后顺序,那么就会形成竞态条件(race condition),使得计算结果不能预期。原创 2023-10-07 18:19:46 · 55 阅读 · 1 评论