windows编程
文章平均质量分 54
不系之舟913
这个作者很懒,什么都没留下…
展开
-
MFC多线程与线程同步 (三)
3.信号量内核对象 信号量(Semaphore)内核对象对线程的同步方式与前面几种方法不同,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。在用CreateSemaphore()创建信号量时即要同时指出允许的最大资源计数和当前可用资源计数。一般是将当前可用资源计数设置为最大资源计数,每增加一个线程对共享资源的访问,当前可用资源计数就会减1,只要当前可用资转载 2013-06-26 13:06:23 · 831 阅读 · 0 评论 -
双缓冲消息队列-减少锁竞争
双缓冲消息队列-减少锁竞争在网络应用服务器端, 为了性能和防止阻塞, 经常会把逻辑处理和I/O处理分离: I/O网络线程处理I/O事件: 数据包的接收和发送, 连接的建立和维护等. 逻辑线程要对收到的数据包进行逻辑处理. 通常网络线程和逻辑线程之间是通过数据包队列来交换信息, 简单来说就是一个生产者-消费者模式.这个队列是多个线程在共享访问必须加锁, 意味着每次访问都要加锁转载 2013-08-05 16:43:31 · 1028 阅读 · 0 评论 -
CImage类绘图,放大镜看图的实现
为了绘制jpg格式的图像数据在界面中,目前采用微软提供的CImage类实现,CImage增加型的图像绘制工具, 采用放大镜看图,并用滚轮滚动放大缩小放大镜,并移动鼠标看图,如果不使用双缓冲绘制,图像会出现闪烁的现象, 1: CImage绘图 SetStretchBltMode(pDC->m_hDC,HALFTONE);原创 2013-07-30 10:44:15 · 2124 阅读 · 0 评论 -
双缓冲队列尝试
提出背景:在C/S模式的系统里面,服务器端的主线程,除了要接收消息之外,还要处理消息。这使得主线程的工作量不但很大,而且工作很繁杂。这种情况在软件设计的角度来看,是很不好的:第一,这样让主线程类看起来异常的臃肿和难易阅读,第二,软件设计追求的目标是“尽量让每个类处理的工作都很单一,这样便于以后的调试和进一步对程序的扩展和移植”,这样的设计背离了软件设计中“模块化设计”的原则。为此,很多程序转载 2013-08-03 16:19:13 · 867 阅读 · 0 评论 -
MFC中的文件读写技术
计算机室如何管理自身所存放着的大量的信息的呢?windows的磁盘管理程序为我们提供了一套严密而又高效的信息组织形式--硬盘上的信息是以文件的形式被管理的。面向存储的文件技术什么是文件?计算机中,一篇文章、一幅图片、一个程序等都是以文件的形式存储在磁盘上的,每个文件都有一个文件名。计算机就是对文件按名存取的。文件名的格式如下:主文件名.扩展名。为什么要在程序中使用文件?通常,程序中转载 2013-08-02 17:31:15 · 932 阅读 · 0 评论 -
GDI对象和CDC的使用方法(防止资源泄漏)
1:CDC方面: CDC有三种使用方式 一种是获得,包括GETDC和GETWINDOWDC,这种CDC是引用,使用完了一定要ReleaseDC,不释放就会这个引用过来的CDC资源泄漏,千万不能用DeleteDC,会导致报错或程序崩溃。 还有一种就是创建,一般是CreateDC,CreateCompatibleDC等,这是创建一个新的DC,使用完了要D原创 2013-07-31 10:44:29 · 1845 阅读 · 0 评论 -
MFC 资源泄露引起的问题
MFC开发软件,注意内存泄漏和资源泄漏,此篇文章来谈谈资源泄漏引起的问题 1:资源泄漏引起的现象: 程序长时间运行,系统界面出现花屏现象,这就应该是资源泄漏 2:诊断方法: 可以打开资源管理器,选择gdi对象显示,实时观察gdi是否只增无减,如果一直是增长趋势,那么可以断定是资源泄漏原创 2013-07-31 10:15:57 · 1403 阅读 · 0 评论 -
MFC绘图不闪烁——双缓冲技术[转]
在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃。所谓双缓冲技术,下面是百度百科的解释:我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层上显示图像我们才能看到。现在,我需要创建一个虚拟的、看不见但是可以在上面画图(比如说画点、线)的OSD层,我称之为offscreen(后台缓冲区)。这个offscreen转载 2013-07-30 09:51:04 · 1572 阅读 · 0 评论 -
WaitForSingleObject的用法
1.WaitForSingleObject的用法 DWORDWaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );参数 hHandle是一个事件的句柄,第二个参数 d转载 2013-06-29 10:43:02 · 943 阅读 · 0 评论 -
MFC多线程与线程同步一
MFC 多线程及线程同步一、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息转载 2013-06-26 12:13:42 · 757 阅读 · 0 评论 -
MFC 多线程及线程同步 (二)
MFC为临界区提供有一个CCriticalSection类,使用该类进行线程同步处理是非常简单的,只需在线程函数中用CCriticalSection类成员函数Lock()和UnLock()标定出被保护代码片段即可。对于上述代码,可通过CCriticalSection类将其改写如下:CCriticalSection g_clsCriticalSection; // MFC临界区类对象cha转载 2013-06-26 13:01:01 · 900 阅读 · 0 评论 -
VC串口通信
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。 在Win32下,可以使转载 2014-05-04 18:19:25 · 936 阅读 · 0 评论