自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不会飞的纸飞机的博客

一个编程小白的编程学习总结

  • 博客(17)
  • 资源 (7)
  • 收藏
  • 关注

原创 个人技术文章汇总

QGraphicsView框架。Windows程序设计。

2020-02-09 18:40:17 4998

原创 线程的互斥和同步(9)- Qt中的读写锁QReadWriteLock

Qt中提供了 QReadWriteLock 类,我们可以方便的使用读写锁。读写锁 是指 读锁 和 写锁 。适用于多个线程读操作比较频繁,而写操作不频繁的场景中。它能够保证多个线程读操作访问资源时同时进行,而写入操作时阻塞读操作。也就是我们常说的,读共享 和 写独占 。1. 读共享和写独占读共享 :当其他线程占用读锁的时候,如果其他线程请求读锁,会立即获得。当其他线程占用读锁的时候,...

2020-02-27 21:27:09 2801 1

原创 Qt中的线程池QThreadPool

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永...

2020-02-26 22:50:41 13405 2

原创 线程的互斥和同步(8)- C++11中的互斥锁和条件变量

文章目录1. 互斥锁(1) 递归锁和非递归锁(2) 互斥锁管理类2. std::condition_variable1. 互斥锁之前讲过使用Windows的API和Qt中如何创建和使用互斥锁。接下来,主要说明一下C++11中的互斥锁。c++11中的互斥锁主要有如下几种:互斥锁说明mutex最基本的互斥锁,不可重入timed_mutex具有超时机制的互斥锁...

2020-02-23 20:34:46 839

原创 线程的互斥和同步(7)- Qt的条件变量QWaitCondition

QWaitCondition 提供了一个用于同步线程的条件变量。它允许一个线程后告诉其他的线程已经满足了某种条件;一个或多个线程可以阻塞等待 QWaitCondition 来使用 wakeOne() 或 wakeAll() 设置条件。使用 wakeOne() 唤醒一个随机选择的线程或者 wakeAll() 唤醒全部等待的线程。下面是 QWaitCondition 类中,常用的函数介绍:bo...

2020-02-23 13:09:54 1965 1

原创 线程的互斥和同步(6)- Qt的信号量QSemaphore

上一篇文章主要介绍了使用Windows API创建和使用信号量Semaphore线程的互斥和同步(5)- Windows的信号量Semaphore本篇文章只要介绍Qt的信号量 QSemaphore 类的使用,并用一个 生产者-消费者 实例来说明信号量是如何提高多线程的效率的。下面是使用类 QSemaphore 常用的函数:void acquire (int n = 1); 表示请求n...

2020-02-20 20:59:10 1704 1

原创 线程的互斥和同步(5)- Windows的信号量Semaphore

信号量也是进程间同步常用的手段之一。举个例子,比如我们要去餐馆吃饭,这家餐馆一共有4个位置,我们一共是6个人。那么就会4个人先去吃饭,等他们吃完了,剩下的2个人再去吃饭,如果再来人则需要判断是否有空位置,如果有直接坐下吃饭,如果没有则需要等待。这里的每一个顾客就相当于一个线程,而通知你排队叫号进餐的那个服务员就是我们的信号量。信号量可以有效的保证我们多个线程并发执行。对于信号量,我们经常使用的...

2020-02-19 21:31:38 1143

原创 线程的互斥和同步(4)- Qt中的互斥锁(QMutex和QMutexLocker)

上一篇文章主要介绍了Windows的互斥锁线程的互斥和同步(3)- Windows的互斥锁Linux也有自己API来操作互斥锁,对于跨平台的操作,Qt帮助我们使用一套代码实现相同的效果。Qt中使用类 QMutex 和 QMutexLocker 来实现和管理互斥锁。类 QMutex 的主要函数有:lock (); 加锁,如果该互斥锁被占用,该函数阻塞,直到互斥锁被释放。u...

2020-02-17 21:30:35 1815 1

原创 线程的互斥和同步(3)- Windows的互斥锁

什么是互斥锁/互斥量?在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象;选自百度百科-互斥锁。同一时刻只有一个线程访问互斥锁,如果其他线程请求占用该互斥锁时,该请求锁的线程会被挂起。直到锁的拥有者释放该互斥锁,CPU调度到请求锁的线程占有该互斥锁,该线程被唤醒。Windows中...

2020-02-17 00:06:09 1240 1

原创 Qt绘制文字轮廓

首先看一下使用Qt绘制文字轮廓效果:这里使用 QPainter 中的 strokePath 函数实现文字轮廓的绘制。void QPainter::strokePath(const QPainterPath &path, const QPen &pen)函数 strokePath 表示使用pen绘制一个路径的轮廓。Draws the outline (strokes) t...

2020-02-15 22:07:32 4325 2

原创 线程的互斥和同步(2)- Windows的临界区

临界区是指程序中的多个线程访问同一个受保护的代码段,临界区的代码段同一时刻只允许一个线程执行。使用临界区对象 CriticalSection ,来实现对临界区的操作。下面是一些过于临界区操作的主要函数:InitializeCriticalSection (LPCRITICAL_SECTION lpCriticalSection); 初始化临界区对象DeleteCriticalSecti...

2020-02-09 16:23:28 597 1

原创 Qt自定义ColorDialog(支持RGB和HSV)

文章目录1. HSV和RGB2. H分量圆盘绘制3. SV画布绘制当我们做软件开发的时候,经常需要编辑颜色,有时需要同时编辑RGB和HSV的颜色。这是一个自定义的颜色对话框,如下图所示具有如下功能:支持RGB和HSV颜色值得修改和预览支持添加自定义颜色(点击按钮添加或鼠标拖拽添加)修改颜色效果预览:添加自定义颜色效果预览:颜色控件效果预览:下面是主要用到得技术点说...

2020-02-08 17:51:02 5567 18

原创 基于Qt的简易Http下载软件

文章目录1. 发送head请求获取文件大小信息2. 发送获取部分文件请求3. 设置代理一个简单的Http下载软件,支持 断点续传 ,文件下载完成后可直接预览,不过下载速度一般(每次请求大约10K的数据量,也没有使用短线成切片下载)下面的效果截图:完整效果演示:这里主要使用了使用了类 QNetworkAccessManager 、 QNetworkRequest 和 QNetworkRe...

2020-02-07 16:55:11 1951

原创 线程的互斥和同步(1)- 原子操作与自旋锁

文章目录1. 使用Windows API实现原子操作2. 使用C++11提供的原子对象实现原子操作3. 使用atmoic_flag实现自旋锁在进行多线程编成的时候,我们经常会遇到线程的互斥与同步问题。比如多个线程访问同一个变量,需要互斥的操作,一个线程需要等待另一个线程处理后再进行接下来的操作等等。接下来我们看一下线程的互斥,原子操作。原子操作 ,是多线程程序中 “最小的且不可并行化的” ...

2020-02-05 16:32:21 1022 1

原创 使用Windows API实现自定义线程类CThread

我们在使用QThread的时候,只需要继承QThread重新实现 run() 函数就可以了,使用起来很方便,接下来就介绍一种实现自定义的类 CThread ,只要继承 CThread 后,重新实现 run() 函数即可。关于 QThread 的使用可以参见 使用Qt中的QThread创建线程或者访问我的 个人博客主页 http://www.douzhq.cn ,导航栏中点击多线程,然后也可以...

2020-02-04 18:44:36 1090 1

原创 使用Qt中的QThread创建线程

文章目录1. 使用信号和槽的形式触发2. 使用继承自QThread方式触发3. 几点说明上篇文章中简单介绍了如何使用 Windows API 和c++11中的 std::thread 创建线程。线程的创建和基本使用本篇文章将会介绍如何使用QThread创建线程。QThread是Qt所有线程控制的基础,每一个QThread实例对象控制一个线程。QThread可以直接实例化使用也可以用...

2020-02-03 17:13:22 4393 1

原创 线程的创建和基本使用

文章目录1. 什么是线程? 为什么要用多线程?2. 线程的创建和使用(1) 使用操作系统API创建(2) 使用C++11创建(3) c++11线程ID的获取1. 什么是线程? 为什么要用多线程?线程,是操作系统能够运行和计算和调度的最小单位。一个进程至少要包含一个线程,线程要包含在进程中,是进程实际运作单位。一个进程中可以多有个线程,每个线程并发执行。每个线程有独立的栈空间,线程之间共享静...

2020-02-01 22:25:06 935

EasyQtAVTV_Code.zip

基于QTAV的电视播放器,EasyQtAVTV源代码

2021-02-10

EasyQtAVTV.zip

基于QtAV的简易电视播放器

2021-02-10

assimp.zip

VS2019编译-x64 编译好的Assimp库

2021-02-08

ScreenSnow_src.zip

桌面下雪软件源代码

2020-12-25

ScreenSnow.zip

桌面下雪软件可执行程序

2020-12-25

COMIntro2.zip

文章《COM编程入门Part Ⅱ - 深入理解COM服务器[译]》 源码和可执行文件,方便大家下载。

2020-12-10

COM编程入门Part Ⅱ - 深入理解COM服务器[译] (代码)

文章《COM编程入门Part Ⅱ - 深入理解COM服务器[译]》的代码。为了方便大家,下载源码,我上传到了这里。

2020-12-10

空空如也

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

TA关注的人

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