![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
VC
QQ853298070
这个作者很懒,什么都没留下…
展开
-
在用户线程/主线程中推荐MsgWaitForMultipleObjects代替WaitForSingleObject和WaitForMultipleObjects()函数
在多线程编程中,通常都需要线程间的同步,一个线程要等待另一个线程的事件才继续执行,一般的做法是采用WaitForSingleObject和WaitForMultipleObjects()函数来实现。但在实际的应用中,经常出现等待线程卡死的状况,也就是说等待的事件一直无效。为什么事件一直无效呢?很多的情况是等待线程阻塞了另外的线程,使另外的线程无法设置事件有效。为什么会阻塞呢?原因就比较多了,需要...转载 2018-08-05 17:27:26 · 224 阅读 · 0 评论 -
Libevent使用例子,从简单到复杂
本文从简单到复杂,展示如何使用libevent。网上的许多例子都是只有服务器端的,本文里面客户端和服务器端都有,以飨读者。 关于libevent编程时的一些疑问可以阅读《libevent编程疑难解答》。假如读者还想了解libevent的具体实现,可以阅读《libevent源码分析》系统文章。初等:客户端代码:#include<sys/types.h> ...转载 2018-09-11 22:33:45 · 101 阅读 · 0 评论 -
汇编环境搭建(vs2010(2012)+masm32)
我本地使用的环境VS2012(2010)+MASM32,下面的图是在网上找的几个博客拼在一起的,用的是vs2010,但是并不影响。(所有文件我都打包好了,如果懒的话可以直接下载这个包)地址是:http://download.csdn.net/detail/u013761036/9601184 一、安装masm321.下载安装包(http://www.masm32.com/masmd...转载 2018-08-19 10:58:48 · 1055 阅读 · 1 评论 -
模板与成员函数指针
#include <iostream>#include <list>using namespace std;/*包装类,成员函数指针类型与普通函数指针类型不同,不能在类外直接定义*/template <class T, class _Ty>class CPtrMaker{public: //自定义成员函数指针类型 typedef...原创 2018-08-08 21:58:38 · 924 阅读 · 0 评论 -
C/C++语言字符串操作总结大全(超详细)
字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen(p) 取字符串长度strcmp(p, p1) 比较字符串strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串s...转载 2018-08-06 21:43:20 · 551 阅读 · 0 评论 -
详解C语言可变参数va_list和vsnprintf及printf实现
C语言的变长参数在平时做开发时很少会在自己设计的接口中用到,但我们最常用的接口printf就是使用的变长参数接口,在感受到printf强大的魅力的同时,是否想挖据一下到底printf是如何实现的呢?这里我们一起来挖掘一下C语言变长参数的奥秘。先考虑这样一个问题:如果我们不使用C标准库(libc)中提供的Facilities,我们自己是否可以实现拥有变长参数的函数呢?我们不妨试试。一步一步进入正...转载 2018-08-06 21:37:11 · 350 阅读 · 0 评论 -
并行计算简介和多核CPU编程Demo
tag:多线程,并行计算,OpenMP,多核编程,工作线程池( 2008.01.19 更新 鉴于读者反映代码阅读困难,重新改写了文章和实现,使文章更易读 )( 2007.09.04 更新 把用事件控制的线程启动更新为临界区的实现 ) 2006年是双核的普及年,双核处理器出货量开始超过单核处理器出货量;2006年的11月份Intel开始供货4核;AMD今年也将发布4核,并计划...转载 2018-08-06 21:31:34 · 4502 阅读 · 0 评论 -
让C++回调函数可以同时支持成员函数和静态函数的方法
回调函数是分层软件系统中经常使用的一种技巧,当下层需要调用上层的接口时,一般都使用回调函数来破除循环依赖。在纯C语言环境中,回调函数用起来很简单——一个函数指针而已。但是当大家都用上C++以后,回调函数碰到了点麻烦:很多模块接口都是成员函数,怎么回调?一些较有经验的程序员会说:成员函数也是可以取函数指针的。没错,但是如果当一个事件触发时,需要依次调用很多个模块的接口呢?(这个场景在“观察者”设...转载 2018-08-09 21:10:41 · 760 阅读 · 0 评论 -
深入理解C++浮点数(float、double)类型数据比较、相等判断
浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入。但是这种设计的好处是可以在固定的长度上存储更大范围的数。1、将字符串转换为float、double过程存在精...原创 2018-08-05 18:07:48 · 300 阅读 · 0 评论 -
VC++实现切换按钮
VC++实现切换按钮有时候要实现两个选项的切换,常规做法1是放两个Radio按钮控件,并设置这两个按钮为一组。2是放一个Check按钮控件。但感觉都不是那么理想和直观。有没有更好的实现方式呢?下面将给你介绍一种我自绘的控件,我把它命名为“切换控件”(SwitchButton)。实现的效果如下图实现,给你一个多的选择,以供参考。下面是实现源码: //////////...原创 2018-08-05 17:40:04 · 732 阅读 · 0 评论 -
设计模式C++实现(15)——观察者模式
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍观察者模式的实现。 观察者模式:...原创 2018-08-05 17:34:43 · 93 阅读 · 0 评论 -
在DLL间或者DLL与EXE之间传递vector对象或指针的问题
今天在完成一个功能模块时,遇到了一个很棘手的问题,大概是这样的:主模块(EXE)的一个DLL中有一个函数FunA(),该函数需要查询数据库,得到记录集做处理,而数据库的操作又单独封装导出了一个DLL,由于记录集是变长的(不知道有多少记录),所以采用vector对象来传递数据。大概的过程如下:boolFunA_EXE(){vector<T> vecRet; ...转载 2018-08-05 17:29:32 · 750 阅读 · 0 评论 -
OBS-Studio使用VS2015编译调试
官方编译文档:https://github.com/jp9000/obs-studio/wiki/Install-Instructions#windows-build-directions官方source guide: https://obsproject.com/wiki/Sources-Guide1、我的本机环境 Win10LTSB企业版、VS2015旗舰版2、下载ob...转载 2018-09-05 22:58:12 · 931 阅读 · 0 评论