![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
文章平均质量分 97
Dio夹心小面包
"放弃学习的我们是没有翅膀的雄鹰 不会理智的我们是根茎腐烂的大树"
博客用于复习整理
展开
-
『 C++ 』多线程相关
但如果在最后的比较中,当前内存中的值与最初加载进寄存器中的值不同则表示这个值已经被其他线程修改过了,如果再把当前寄存器的值写回内存中则是一个无用功,会导致数据不一致问题,那么这次的CAS操作则是失败,此时需要重新将内存中的值加载进寄存器中并再次进行上述操作,当比较时当前内存中的值与原来加载进寄存器的值相同时才能把在寄存器中计算后的值写回内存中,才算一次CAS操作成功;但是这里的互斥锁有一个问题,由于临界资源很短,且对临界资源的操作是非常小的操作,使用互斥锁反而有种"杀鸡焉用牛刀"的感觉;原创 2024-09-02 00:56:16 · 676 阅读 · 0 评论 -
『 Linux 』TCP套接字网络通信程序
TCP套接字提供了面向连接的 , 面向字节流的 , 传输可靠的传输方式;面向连接的TCP是一种面向连接的协议 , 在通信开始之前需要建立联系;这个连接通过三次握手过程建立以确保通信双方已经准备好进行数据传输;面向字节流TCP传输的数据被看作是连续的字节流而不是消息或数据包;这意味应用程序可以将数据作为字节流发送 , TCP将会负责这些字节流按照顺序传送给接收方 , 接收方也会以同样的顺序接收数据;面向字节流也意味着可以直接使用writeread来对该套接字描述符进行操作;原创 2024-08-28 01:47:49 · 1179 阅读 · 0 评论 -
『 C++ 』线程库
C++ 标准库自 C++11 引入了线程支持库,提供了一个完整的线程管理工具集。这些工具包括用于创建和管理线程的类如 std::thread,以及同步机制如互斥锁 (mutex) 和条件变量 (condition_variable) 。这些库在不同操作系统上由不同的底层实现支持,譬如在 Linux 上基于 pthread 线程库。在创建和销毁线程时,可以直观地使用线程的构造和析构函数,并通过简单的成员函数进行线程操作。条件变量和互斥锁确保了多线程环境下的数据一致性及避免竞态条件。原创 2024-08-25 15:31:10 · 742 阅读 · 0 评论 -
『 Linux 』线程安全的单例模式,自旋锁与读写锁
这篇文章主要介绍了计算机编程中的一些重要概念和技术,包括单例模式(懒汉模式和饿汉模式)、自旋锁、读写锁。单例模式讲解了其特点和优点,以及两种加载方式。自旋锁阐述了其机制、初始化、锁定与解锁等。读写锁介绍了其状态、在 POSIX 线程库中的使用,包括初始化、加锁和解锁等。这些内容对理解多线程同步和资源管理有重要意义。原创 2024-08-04 16:39:49 · 794 阅读 · 0 评论 -
『 Linux 』线程池与 POSIX 线程的封装编码实现
这篇文章详细介绍了线程池的概念和实现。文章首先解释了线程池的基本原理,包括资源分配、复用和管理等方面。接着,展示了一个线程池的C++实现,包括线程池类的设计、任务队列的管理、线程同步机制等核心组件。文章还提供了一个简单的任务类和测试代码,用于演示线程池的使用。此外,文章还讨论了线程的封装技术,展示了如何将POSIX线程封装成一个C++类,使线程的使用更加面向对象和便捷。文章通过代码示例和详细注释,清晰地展示了线程池和线程封装的实现细节,包括构造函数、线程启动、任务处理等关键方法。原创 2024-08-02 21:03:51 · 997 阅读 · 0 评论 -
『 Linux 』POSIX 信号量与基于环形队列的生产者消费者模型
本文介绍了基于环形队列的生产者消费者模型。首先阐述了信号量的概念、类型和操作方法,包括P操作和V操作。然后详细讲解了POSIX信号量的使用,包括初始化、销毁、等待和释放等操作。接着描述了环形队列在生产者消费者模型中的应用,解释了模型的核心要素和工作原理。最后通过具体的C++代码实现,展示了如何使用信号量和互斥锁来构建一个线程安全的环形队列,并通过简单数据和复杂任务两个例子演示了模型的实际应用。整体内容涵盖了理论基础和实践应用,为理解和实现并发编程中的同步机制提供了详细指导。原创 2024-08-02 16:00:45 · 756 阅读 · 0 评论 -
『 Linux 』基于阻塞队列的生产者消费者模型
生产者-消费者模型是一种常见的多线程设计模式,用于协调生产者和消费者线程之间对共享资源的访问。在这个模型中,生产者负责生成数据或任务并将其放入共享缓冲区,而消费者则从缓冲区中取出数据进行处理。关键点在于生产者和消费者通过共享缓冲区进行解耦,允许它们以不同的速率工作。该模型通过互斥锁和条件变量来实现线程同步。互斥锁确保对共享资源的互斥访问,而条件变量则用于线程间的通信和协调。当缓冲区满时,生产者等待;当缓冲区空时,消费者等待。这种设计提高了系统的并发性和效率,特别适合处理生产和消费速率不匹配的场景。原创 2024-08-01 16:37:20 · 1135 阅读 · 0 评论 -
『 Linux 』线程同步问题与条件变量
同步问题涉及多线程环境下,确保访问同一资源时的顺序性和数据安全。互斥锁常用于保护临界资源,防止数据竞争和不一致。条件变量是一种线程同步机制,允许线程在特定条件满足前等待,并在满足时被唤醒。它通常与互斥锁结合使用,确保共享资源的安全访问。生产者-消费者模型是一种多线程设计模式,生产者生成数据放入缓冲区,消费者从缓冲区读取数据处理。通过互斥锁和条件变量,生产者和消费者可以有效地同步和互斥访问共享资源,提高系统效率和稳定性。原创 2024-07-31 21:46:13 · 909 阅读 · 0 评论 -
『 Linux 』多线程互斥锁
文章深入分析了互斥锁的原理及其原子性,阐明了互斥锁在多线程同步中的重要性,并展示了如何封装互斥锁以简化其使用。在实际应用中,通过正确使用互斥锁和其他同步机制,可以确保多线程程序的正确性和高效性。最后,文章深入分析了互斥锁的原理及其原子性,阐明了互斥锁在多线程同步中的重要性,并展示了如何封装互斥锁以简化其使用。在实际应用中,通过正确使用互斥锁和其他同步机制,可以确保多线程程序的正确性和高效性。原创 2024-07-30 17:57:19 · 969 阅读 · 0 评论 -
『 Linux 』线程的资源共享,分离,以及多线程并发导致资源竞争
在多线程编程中,为确保线程安全和数据一致性,必须注意线程的资源共享和独立数据区。线程共享进程的大部分资源,如全局变量、堆、代码段等,但每个线程也有自己的独立数据区,如线程栈、线程局部存储等。这种共享和独立机制在提升多线程编程效率的同时,也带来了数据竞争问题。当多个线程同时访问和修改共享资源时,可能导致数据不一致的现象。因此,需要通过线程同步机制,如互斥锁、信号量等,来确保对共享资源的访问是原子性的,从而避免数据竞争问题,确保程序的正确性和稳定性。在实际应用中,合理利用这些机制可以有效提高多线程程序的性能和可原创 2024-07-29 21:16:13 · 364 阅读 · 0 评论 -
『 Linux 』线程控制
类型的参数以表示该线程的返回值,通常该值不能是线程栈上开辟的空间中的数据,必须是在非栈上这种共享空间中,因为该线程的生命周期已经结束,若是访问线程栈中的数据将会导致段错误;参数返回时不能直接返回线程栈上开辟空间的数据,因为线程的栈是其独立的,当程序执行完毕后表示该线程的生命周期结束,对应的其栈的空间将会被回收;查看当前对应运行进程中的轻量级进程的基本属性(该命令为内置命令,且Linux中不存在线程概念,所以查看的属性为轻量级进程的基本属性);通常着需要指向一个预先分配好的栈内存区域,并且栈的顶端应该对齐;原创 2024-07-28 20:37:40 · 681 阅读 · 0 评论 -
『 Linux 』线程概念
线程本质上是进程的一个执行分支,用于处理进程中的代码和数据;每个线程都可以执行独立不同的代码片段,这意味着在一个进程中可以同时执行多个任务;同一个进程中的所有线程共享相同的内存地址空间和资源(如全局变量,文件句柄等);使得线程之间的通信和数据共享十分搞笑,因为它们不需要像进程通信那样复杂的机制;在Linux中,线程在进程"内部"执行,线程在进程的地址空间内运行任何执行流要执行的前提是具有资源;进程地址空间是进程的资源窗口,线程在进程"内部"执行意味着其将执行进程代码的一部分;原创 2024-07-27 18:34:58 · 814 阅读 · 0 评论