c++
lidandan2016
这个作者很懒,什么都没留下…
展开
-
windows下的线程同步的方式
临界区、互斥区、事件、信号量四种方式临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临原创 2017-05-12 16:56:37 · 369 阅读 · 0 评论 -
【整理】Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR
【整理】Dword、LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTRL表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP与P是等效的。转载 2017-06-07 15:50:13 · 780 阅读 · 0 评论 -
#pragma once与 #ifndef的区别
为了避免同一个文件被include多次1 #ifndef方式2 #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句转载 2017-06-07 16:46:40 · 343 阅读 · 0 评论 -
关键字:mutable和volatile
(1)mutable 在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。1. struct ST 2. 3. { 4. 5. int a; 6. 7.原创 2017-06-23 18:13:16 · 504 阅读 · 0 评论 -
函数名与函数指针
一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){ MyFun(10); //这里是调用MyFun(10);函数 return 0;}voi转载 2017-07-14 11:51:21 · 173 阅读 · 0 评论 -
cin.get()和cin.getline()之间的区别
cin.getline()和cin.get()都是对输入的面向行的读取,即一次读取整行而不是单个数字或字符,但是二者有一定的区别。cin.get()每次读取一整行并把由Enter键生成的换行符留在输入队列中,比如:复制代码代码如下:#include using std::cin;using std::cout;const int SIZE = 15;转载 2017-07-18 15:38:39 · 602 阅读 · 0 评论 -
strlen,wcslen,lstrlen函数与sizeof运算符
#ifdef UNICODE#define lstrlen lstrlenW#else#define lstrlen lstrlenA#endif所以在Unicode下,lstrlen等同lstrlenW(LPCWSTR lpString),在非Unicode下等同lstrlenA(LPCSTR lpString)。而lstrlenW又等同于wcslen,lstrl转载 2017-07-19 10:10:03 · 2935 阅读 · 0 评论 -
C#跨窗体传值的几种方法分析(很详细)
创建一个Winform窗体应用程序项目,然后添加一个Form2窗体。在Form1和Form2中各添加一个textBox和button: 单击Form1中的button1,弹出Form2,然后要做的就是在Form1中的textBox1和Form2中的textBox2中传值。 为了方便起见,将Form1称作父窗体,将Form2称作子窗体。转载 2017-09-04 16:36:27 · 1794 阅读 · 2 评论 -
UML类图与类的关系详解
在画类图的时候,理清类和类之间的关系是重点。类的关系有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系和聚合关系(Aggregation),合成关系(Composition)。下面我们结合实例理解这些关系。基本概念类图(Class Diagram): 类图是面向对象系统建模中最常用转载 2017-10-09 18:07:02 · 345 阅读 · 0 评论 -
AfxBeginThread 传参
用MFC开发时,经常会用到多线程,它的启动方式就是通过AfxBeginThread这个方法来创建,然后启动,比如标准的方式: CWinThread *pthread = AfxBeginThread(方法名, (LPVOID) 入参, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); 入参就是传给执行方法的参数,这里只能传一个参原创 2017-06-07 11:23:14 · 1333 阅读 · 0 评论 -
串口流控制(flow control)
我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解一点这方面的知识是有好处的。那么,流控制在串行通讯中有何作用,在编制串行通讯程序怎样应用呢?这里我们就来谈谈这个问题。 1.流控制在串行通讯中的作用 这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时转载 2017-06-06 15:05:47 · 2790 阅读 · 0 评论 -
串口的一点知识(摘抄)
第一章 背景知识1. 概述串口是计算机上I/O接口的一种,要掌握串口通信编程的相关知识,必须先了解I/O接口的相关知识。I/O接口是接口的一种。2. 什么是接口?众所周知计算机是由CPU,存储器,外部终端设备组成.接口就是用于CPU与外部设备、存储器的连接和数据交换的设备。3. 接口分类.广义的计算机接口有二种,见下表:类別 用途 电路实现复杂性存储器接转载 2017-06-06 14:36:07 · 2512 阅读 · 0 评论 -
关于在线程中使用AfxGetMainWnd()出错的问题,终于找到了
关于在线程中使用AfxGetMainWnd()出错的问题.AfxGetMainWnd()得到的是当前线程的主窗口(如果有的话).因为主窗口是属于主线程的,所以想得到主窗口HWND值,只能在主线程中用AfxGetMainWnd(),但要不是处在主线程中,AfxGetMainWnd()可能是从当前线程查询主窗口的。但好像AfxGetMainWnd()不能跨线程,故要出错.要想在转载 2017-05-15 15:39:34 · 483 阅读 · 0 评论 -
mfc动态创建(dynamic create)实现原理
在用到MFC的文档视图构架你可能有个非常迷惑的地方.就是很多类不知道在哪里就被莫名其妙的实例化了.以单文档视图为例.代码中你能看到的的实例化的地方就只有两个一个是CWinApp的一个全局变量的实例化,另一个就是 CSingleDocTemplate 实例化.它的构造函数如下CSingleDocTemplate(UINT nIDResource, CRuntimeClass* p转载 2017-05-18 15:00:28 · 1139 阅读 · 0 评论 -
DECLARE_MESSAGE_MAP( )用法
DECLARE_MESSAGE_MAP( ) 说明: 你的程序中的每一个CCmdTarget的派生类都可以提供一个消息映射以处理消息。在你的类声明的末尾使用DECLARE_MESSAGE_MAP宏。然后,在实现了类成员函数的.CPP文件中加入BEGIN_MESSAGE_MAP宏,再加入每个消息处理函数的宏入口,最后使用END_MESSAGE_MAP宏。 注意: 如果你在DE转载 2017-05-19 16:05:59 · 702 阅读 · 0 评论 -
MFC里面RC资源编辑器不能打开的解决办法
MFC里面RC资源编辑器不能打开的解决办法 MFC的RC文件在编辑器下打不开了,提示"This file is already open in a editor.",然后显示的就是代码,对话框、菜单什么的都显示不了,解决方法: 在上面所述的情况下关闭所有打开的文件,就搞定了原创 2017-05-19 17:59:31 · 5473 阅读 · 3 评论 -
C++信号量Semaphore和MFC中的CSemaphore类使用
C++ 信号量Semaphore 和MFC 中的CSemaphore 类使用【转】信 号量(Semaphore )内核对象对线程的同步方式与前面几种方法不同,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最 大线程数目。在用CreateSemaphore() 创建信号量时即要同时指出允许的最大资源计数和当前可用资源计数。一般是将当前可用资源计数设置为最转载 2017-06-05 15:05:58 · 976 阅读 · 0 评论 -
Visual Leak Detector (VLD)使用
Visual C++内置内存泄露检测工具,但是功能十分有限。VLD就相当强大,可以定位文件、行号,可以非常准确地找到内存泄漏的位置,而且还免费、开源!在使用的时候只要将VLD的头文件和lib文件放在工程文件中即可。也可以一次设置,新工程就不用重新设置了。只介绍在Visual Studio 2003/2005中的设置方法,VC++ 6.0类似:打开Tools -> Optio原创 2017-06-05 17:10:34 · 1027 阅读 · 0 评论 -
WaitForSingleObject与WaitForMultipleObjects用法详解
在多线程下面,有时候会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects。这两个函数都会等待Object被标为有信号(signaled)时才返回的。那么,什么是信号呢?简单来说,Windows下创建的Object都会被赋予一个状态量。如果Object被激活了,或者正在转载 2017-06-06 11:44:02 · 806 阅读 · 0 评论 -
串口程序中函数使用WaitCommEvent、ClearCommError、GetcommMask
在串口程序中的几个函数的联合使用一、首先是利用WaitCommEvent来等待串口事件的被触发,这些事件是指在该函数被调用前,我们自己设置好的能触发串口线程的有效事件。主要包括3类事件: 1.函数SetCommMask (ceSeries->m_hComm, EV_RXCHAR |EV_CTS | EV_DSR )设置的数据接收中断 2.用户中断线程的操作。 3.转载 2017-06-06 12:11:03 · 11226 阅读 · 0 评论 -
MFC自定义消息的实现方法----(线程向主对话框发送消息)
在MFC中,我们一边在使用多线程时,经常会遇到在需要调用到新建的控件,此时建议不要在新建的线程中直接调用主对话框的控件,我们可以通过自定义消息,在新建线程中发送并触发主线程进行相关的界面控件操作。以Dialog对话框程序为例,添加自定义消息的操作方法可以如下所示:1.在头文件stdafx.h中添加一个自定义消息宏:#define WM_USER_MSG_HDL (WM_USER...原创 2019-06-11 10:42:09 · 2186 阅读 · 0 评论