![](https://i-blog.csdnimg.cn/direct/658f97f9677849fc931bf01ebaec002a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 90
C++ 使用积累记录
暮色尽染
这个作者很懒,什么都没留下…
展开
-
C++ 进程 线程
线程间通信是指多个线程之间交换数据和协调工作的机制。由于线程之间共享同一个进程的虚拟地址空间,因此可以使用共享变量、互斥锁、条件变量等机制来实现线程间通信。进程间通信(Inter-Process Communication,IPC)是指不同进程之间的数据交换和同步。C++中的线程(Thread)是一种轻量级的进程,是一个程序中的最小执行单元。,它允许开发者异步执行一个函数,即在一个独立的线程中执行该函数。C++11标准中引入了std::thread类,提供了创建和管理线程的功能。,表示单个线程的执行。原创 2024-07-22 21:53:49 · 1066 阅读 · 0 评论 -
C++ 多线程
条件变量通常与互斥量一起使用,用于在线程之间进行通信,允许一个线程等待直到满足特定条件,而另一个线程则通知条件满足。互斥量是一种常用的同步机制,用于保护对共享资源的访问,确保任何时候只有一个线程可以访问受保护的资源。C++ 多线程是指在一个程序中同时运行多个线程,每个线程都可以执行不同的代码段。原子类型用于在不使用锁的情况下实现线程安全的操作,适用于简单的数据类型和操作。C++ 多线程性能优化是一个复杂的话题,涉及到很多因素,包括。:线程池可以减少线程创建和销毁的开销。:任务队列可以优化线程调度。原创 2024-07-29 16:41:54 · 650 阅读 · 0 评论 -
C++ 线程池
(来自ChatGPT)线程池是一种用于管理和复用线程的机制。它可以提高程序的性能和效率,特别是在处理大量并发任务时。线程池中包含一定数量的线程,这些线程可以重复执行多个任务。当有任务需要执行时,可以将任务提交给线程池,线程池会选择一个可用的线程来执行任务。任务执行完毕后,线程会返回线程池,等待下一个任务的到来。线程池的优点:降低线程创建和销毁的开销:线程的创建和销毁是比较耗费资源的操作,使用线程池可以避免频繁地创建和销毁线程,提高程序的性能。提高系统的响应速度。原创 2024-07-01 20:36:40 · 1125 阅读 · 0 评论 -
C++ 任务队列
(来自ChatGPT)任务队列是一种数据结构,用于存储和管理任务(Task)的执行顺序和优先级。任务队列通常由一个队列(Queue)组成,用于存储任务的执行顺序和优先级。任务队列的优点:高效的任务执行: 任务队列可以高效地执行任务,减少任务的等待时间和提高系统的吞吐量。任务优先级管理: 任务队列可以管理任务的优先级,确保高优先级任务先执行。任务调度管理: 任务队列可以管理任务的调度,确保任务按照正确的顺序和优先级执行。可伸缩性: 任务队列可以根据系统的负载动态调整任务的数量和优先级。可靠性。原创 2024-07-30 13:50:50 · 466 阅读 · 0 评论 -
C++ 指针、智能指针、引用
控制块中有强弱引用计数,如果是使用make_shared初始化的函数则它所在的控制块空间是在所引用的shared_ptr中同一块的空间,若是new则控制器所分配的内存与shared_ptr本身所在的空间不在同一块内存。但是,悬空指针不能直接访问对象的成员变量或成员函数,因为编译器不知道指针所指向的对象的类型。也就是说,一个指针指针是一个指针,它的值是另一个指针的地址。悬空指针(Void Pointer)是一种特殊类型的指针,它可以指向任何类型的对象,但不能直接访问对象的成员变量或成员函数。原创 2024-07-16 20:31:39 · 830 阅读 · 0 评论 -
C++ 数组类型
定义 C++ 数组C++ 数组可以使用以下语法定义:初始化 C++ 数组C++ 数组可以使用以下语法初始化:访问 C++ 数组元素C++ 数组元素可以使用以下语法访问:C++ 数组的特点C++ 数组的使用场景需要固定大小数组:C++ 数组适用于需要固定大小数组的场景,如函数参数、结构体成员等。需要高性能:C++ 数组适用于需要高性能的场景,如游戏开发、科学计算等。需要兼容 C 代码:C++ 数组适用于需要兼容 C 代码的场景,如调用 C 函数等。std::array 是 C++11 引入的数组容器原创 2024-08-05 21:04:18 · 627 阅读 · 0 评论 -
C++ 单例模式 实现
单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。原创 2024-07-17 18:58:01 · 1053 阅读 · 0 评论 -
C++ 字符串
char[] 转换为 std::wstring:可以先将 char[] 转换为 std::string,然后再将 std::string 转换为 std::wstring。std::wstring 转换为 char[]:可以先将 std::wstring 转换为 std::string,然后再将 std::string 转换为 char[]。std::wstring 转换为 std::string:可以使用 std::wstring_convert 类。char* 转换为 char[]:可以直接赋值。原创 2024-08-07 10:40:02 · 525 阅读 · 0 评论 -
C++ 数据类型
这种转换发生在表达式中,当一个类型的值被赋给另一个类型的变量时,或者当一个类型的值被用于另一个类型的运算时。C++ 类型转换是指将一个类型的值转换为另一个类型的值。C++ 提供了多种类型转换的方法,包括隐式转换和显式转换。它可以将一个类型的值转换为另一个类型的值,并进行运行时检查。它可以将一个常量类型的值转换为一个非常量类型的值。它可以将一个类型的值转换为另一个类型的值,但不进行运行时检查。它可以将一个类型的值转换为另一个类型的值,但。显式转换是指使用特定的语法进行类型转换。原创 2024-08-15 16:15:55 · 877 阅读 · 0 评论 -
C++ 内存管理
(Stack Memory):栈内存是由编译器自动管理的内存区域,用于存储函数的局部变量、函数参数和返回值。当函数调用时,栈内存会自动分配,当函数返回时,栈内存会自动释放。静态变量在程序启动时分配内存,在程序结束时释放内存。(Heap Memory):堆内存是由程序员手动管理的内存区域,用于存储动态分配的内存的区域。智能指针是 C++11 引入的一种内存管理方式,用于自动管理内存,避免内存泄漏和野指针。容器是 C++ 标准库提供的一种内存管理方式,用于自动管理内存,避免内存泄漏和野指针。原创 2024-08-19 09:58:21 · 876 阅读 · 0 评论