自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 static_cast 和 dynamic_cast

static_cast 和 dynamic_cast 的一些区别

2024-05-05 21:58:20 149

原创 多线程编程7. 线程池(2)

一般用户所需要执行的任务函数,参数数量不确定,类型不确定,是否有返回值也不确定,所以想要表示用户的任务函数,需要用到函数模板进行泛化表示

2024-04-27 16:11:22 137

原创 多线程编程6. std::future、std::promise、std::packaged_task和std::async

std::future提供了一种访问异步操作结果的机制。如果我们想要得到一个线程运行的结果,一般来说,需要用到全局变量,但是从安全的角度上来说,全局变量并不合适。因此,C++11提供了std::future类模板。

2024-04-27 16:10:45 754

原创 多线程编程5. 线程池(1)

线程池的优点减少资源的消耗:较少线程创建和销毁造成的消耗提高响应速度:当任务到达的时候,就能够立刻执行,减少了线程创建和销毁的时间能够更好地管理线程

2024-04-27 16:09:57 226

原创 多线程编程4. std::condition_variable

用于线程的同步,用来实现线程等待和通知机制。条件变量通常与互斥量一起使用。`std::mutex`用于确保在任何时候只有一个线程可以访问共享数据,而`std::condition_variable`则用于在特定条件下唤醒等待的线程。

2024-04-27 16:08:36 627

原创 多线程编程3. std::call_once

`std::call_once` 的作用是,确保在多个线程中同时调用 `call_once` 时,只有一个线程能够成功执行 `func` 函数,而其他线程则会等待该函数执行完成。`注意` : std::call_once 只能在子线程中使用,在主线程中使用会报错

2024-04-27 16:05:19 149

原创 多线程编程2. 多线程数据共享

在多个线程中共享数据时,如果多个线程同时访问同一个变量,并且其中至少有一个线程对该变量进行了写操作,那么就会出现数据竞争问题。数据竞争可能会导致程序崩溃、产生未定义的结果,或者得到错误的结果。常见的同步机制包括**互斥量、条件变量、原子操作**等

2024-04-27 16:00:09 696

原创 多线程编程1. 线程库的基本用法

使得该线程与主线程分离,让其在后台运行,即使主线程提前结束了,子线程也会继续执行,知道结束。程序运行到这句话时不会等待,继续往下执行。返回false: (1) 线程已经被 join() 或者 detach();(2) 线程对象已经被移动。主线程中调用这句话时,如果th子线程还没有执行完毕,则主线程会卡在这里等待子线程执行完毕,再继续往下执行。返回true: 说明该线程还没有被join() 或者detach。判断该线程是否能够调用 join()

2024-04-27 15:57:41 238

原创 Cmake 报错 “STREQUAL“ “Debug“ Unknown arguments specified

Cmake 报错 “STREQUAL“ “Debug“ Unknown arguments specified

2024-04-22 10:53:00 380

原创 LoadLibraryExW 返回错误码126

首先可以参 https://blog.csdn.net/FlushHip/article/details/96167157 所给出的一些可能原因及解决方案。于是下载了 Dependency Walker (https://www.dependencywalker.com/)进行检测。(可以用everything 查看整个文件的路径判断是否为系统dll),便可正常运行了。但是检测的时候发现暴露出来的错误实在太多,无从下手。

2023-12-06 10:39:45 407

原创 UML类图的各种箭头

泛化、实现、依赖、关联、聚合、组合 各种关系的概念解释见以下连接参考连接:https://blog.csdn.net/qq_20936333/article/details/86773664简单例子说明泛化即父子继承关系实现接口与实现(PS:在我看来怎么和继承是一个意思,一个是专门针对接口?)依赖A使用B作为方法的输入参数关联Teacher使用Course作为一个全局变量(相比依赖,Course的作用周期更长)聚合假设Teacher中有一个Student指针,则创建Tea

2021-12-26 17:11:09 1430

原创 设计模式概述

这里写自定义目录标题设计模式概述设计模式的目的设计模式的原则单一职责原则接口隔离原则依赖倒置原则里氏替换原则功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入设计模式概述设计模式的目的1、代码的重用性(相同功能的代码复用)2、

2021-12-26 11:06:35 128

原创 VS 远程调试

VS远程调试1、拷贝Remote Debugger到远程机器在VS安装目录下找到对应的Remote Debugger文件夹,拷贝到需要远程的机器(例如路径:D:\VS\VS2015\installation\Common7\IDE\Remote Debugger )2、在远程机器上运行 msvsmon.exe远程机器上运行 Remote Debugger\x64\msvsmon.exe3、在远程机器上配置权限配置权限如下图,工具->选项->身份验证(选择允许任何用户进行调试)4

2021-12-21 18:07:37 430

原创 利用 QTcpSocket 实现的进程间通信

简介做一个简答的进程间通信的原型,主要是为了了解进程间通信的一些原理本文是利用 QTcpSocket 来实现的。主要步骤实现之后的UI界面如下,主要步骤有一下几步:1、ServerSocket 点击建立连接(此时 ServerSocket 开始监听端口为 5555 的其他程序)2、WorkerSocket 点击连接服务器(通过制定的IP地址和端口主动连接服务器)3、连接之后可以开始互相发送消息。代码实现列出了关键的几个文件// ServerSocket.h#pragma once

2021-07-25 11:15:03 460

原创 如何使用RegSnap监视注册表变化

如何使用RegSnap监视注册表变化操作步骤说明操作步骤1、新建快照新建不同状态下的机器注册表信息2、保存文件新建的文件如上,保存下来,保存的文件后缀名为 .rsnp3、比较文件4、分析比较结果可以查看到 删除,修改,新增的键说明里面记录的修改信息比较多,可以根据里面的增删改信息,来观察自己所关注的键是否发生了改变。...

2021-07-25 10:02:18 3574

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除