09 2017 档案
C++运算符优先级 案例1
摘要:问: ... short nReaderCount=10 ++pLock->nReaderCount==? ...++和->同为1级优先级,我想很多也有很多新手弄不清楚这个例子先执行 ++ 操作,还是先执行的 -> 操作 我自己写个了短程序: #include<iostream> using nam
阅读全文
UNREFERENCED_PARAMETER
摘要:作用:告诉编译器,已经使用了该变量,不必检测警告! 在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告。当你生命了一个变量,而没有使用时,编译器就会报警告:“warning C4100: ''XXXX'' : unreferenced formal parameter
阅读全文
SYSTEM_INFO
摘要:SYSTEM_INFO结构体包含了当前计算机的信息。这个信息包括计算机的体系结构、中央处理器的类型、系统中中央处理器的数量、页面的大小以及其他信息。 SYSTEM_INFO,Win32 API函数GetSystemInfo所使用的结构体。 typedef struct _SYSTEM_INFO {
阅读全文
第6章 Overlapped I/O, 在你身后变戏法 ---被激发的 Event 对象 -4
摘要:以文件 handle 作为激发机制,有一个明显的限制,那就是没办法说出到底是哪一个 overlapped 操作完成了。如果每个文件 handle 只有一个操作等待决定,上述问题其实并不成为问题。但是如我稍早所说,系统有可能同时接受数个操作,而它们都使用同一个文件 handle。于是很明显地,为每一个
阅读全文
第6章 Overlapped I/O, 在你身后变戏法 ---被激发的 File Handles -3
摘要:最简单的 overlapped I/O 类型,是使用它自己的文件 handle 作为同步机制。首先你以 FILE_FLAG_OVERLAPPED 告诉 Win32 说你不要使用默认的同步 I/O。然后,你设立一个 OVERLAPPED 结构,其中内含“I/O 请求”的所有必要参数,并以此识别这个“I
阅读全文
第6章 Overlapped I/O, 在你身后变戏法 ---Win32 文件操作函数 -2
摘要:Win32 之中有三个基本的函数用来执行 I/O,它们是: i CreateFile() i ReadFile() i WriteFile() 没有另外哪一个函数用来关闭文件,只要调用 CloseHandle() 即可。本章对于这些函数将只涵盖其与 overlapped I/O 有关的部分,至于其他
阅读全文
第6章 Overlapped I/O, 在你身后变戏法 ---1
摘要:这一章描述如何使用 overlapped I/O(也就是 asynchronous I/O)。某些时候 overlapped I/O 可以取代多线程的功用。然而,overlapped I/O 加上completion ports,常被设计为多线程处理,以便在一个“受制于 I/O 的程序”(所谓 I/
阅读全文
AF_INET
摘要:AF_INET(又称PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的;而AF_UNIX 则是Unix系统本地通信。 选择AF_INET 的目的就是使用IPv4 进行通信。因为IPv4 使用32位地址,相比IPv6 的128位来说,计算更快,便于用于局域网通信。
阅读全文
Select()使用否?
摘要:David Treadwell ,Windows Socket 的一位开发者,曾经在他的一篇名为“Developing Transport-Independent Applications Using the Windows Sockets Interface”的 文章(可从Microsoft De
阅读全文
修改Form ->Top和Left 造成的莫名其妙的显示异常 “轴信息”
摘要:相关代码: 运行程序: 要等待很久,或者把主窗体最小化,再最大化打开“轴信息” 才会恢复正常。 这个“不爽”很蛋蛋 ,网友亲亲们,有独到见解的亲亲们,期待得到你们的点拨,非常感谢
阅读全文
Delphi中paramstr的用法
摘要:原型 function paramstr(i:index):string 对于任何application paramstr(0)都默认代表的是应用程序的绝对路径。那么有paramstr(0),就肯定有paramstr(1),paramstr(2)...了。它们的值又是什么了?我试了下取出的是空值,又
阅读全文
《改变你一生的108个心理学法则》
摘要:书读完了必须要总结,必须要提炼书中的对自己有用的知识点,必须要把书中所学的在 生活中去实践,这才是读一本书的真正意义与价值所在。为什么我们常说”知道那么多道理还是过不好这一生”,是因为你虽然知道那么多道理,但是你却没有去按 照这些道理去执行,去改变自己的行为习惯,在读这本书之前,书中的很多观点,很多
阅读全文
第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ----初始化一个线程
摘要:使用线程的一个常见问题就是如何能够在一个线程开始运行之前,适当地将它初始化。初始化最常见的理由就是为了调整优先权。另一个理由是为了在SMP 系统中设定线程比较喜欢的 CPU。第10 章谈到 MFC 时我们会看到其他一些理由。 基本问题在于,你需要一个线程 handle,才能够调整线程的性质。但如果你
阅读全文
第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ---线程优先权(Thread priority)
摘要:有没有过这样的经验?你坐在你的车子里,目的地还在好几公里之遥,而时间已经很晚了。你拼命想告诉那些挡住你去路的人们,今天这个约会对你是多么多么重要,能不能请他们统统……呃……滚到马路外?很不幸,道路系统并没有纳入所谓的优先权观念。如果有某条专用道是给“非常重要”的通行所用的,你就可以摆脱那些如潮水般在
阅读全文
第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ---干净的终止一个线程
摘要:干净的终止一个线程 我曾经在第2章产生一个后台线程,用以输出一张屏幕外的 bitmap 图。我们必须解决的一个最复杂的问题就是,如果用户企图结束程序,而这张bitmap 图尚未完成,怎么办?第2章的一个鸵鸟做法就是在任何 worker 线程还没完成其工作之前,不准用户结束程序。只要修改主消息循环,使
阅读全文
第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ---简介
摘要:这一章描述如何初始化一个新线程,如何停止一个执行中的线程,以及如何了解并调整线程优先权。 读过这一章之后,你将有能力回答一个 Win32 多线程程序设计的最基本问题。你一定曾经在 Usenet 的 Win32 论坛中一再地看过这个问题。当我开始在 Win32 上使用线程时,这个问题就一直在折磨我。我
阅读全文
第4章 同步控制 Synchronization ----同步机制的摘要
摘要:同步机制摘要Critical Section Critical section(临界区)用来实现“排他性占有”。适用范围是单一进程的各线程之间。它是: 一个局部性对象,不是一个核心对象。 快速而有效率。 不能够同时有一个以上的 critical section 被等待。 无法侦测是否已被某个线程放弃
阅读全文
第4章 同步控制 Synchronization ----Interlocked Variables
摘要:同步机制的最简单类型是使用 interlocked 函数,对着标准的 32 位变量进行操作。这些函数并没有提供“等待”机能,它们只是保证对某个特定变量的存取操作是“一个一个接顺序来”。稍后我会把这些 interlocked 函数展示出来,因为唯有你自己亲身比较它们和其他同步机制的差异,才能够了解它们
阅读全文
第4章 同步控制 Synchronization ----事件(Event Objects)
摘要:Win32 中最具弹性的同步机制就属 events 对象了。Event 对象是一种核心对象,它的唯一目的就是成为激发状态或未激发状态。这两种状态全由程序来控制,不会成为 Wait...() 函数的副作用。 Event 对象之所以有大用途,正是因为它们的状态完全在你掌控之下。Mutexes 和 sem
阅读全文
第4章 同步控制 Synchronization ----信号量(Semaphore)
摘要:许多文件中都会提到 semaphores(信号量),因为在电脑科学中它是最具历史的同步机制。它可以让你陷入理论的泥淖之中,教授们则喜欢问你一些有关于信号量的疑难杂 症。你可能不容易找到一些关于 semaphores 的有用例子,但是我告诉你,它是解决各种 producer/consumer 问题的关
阅读全文
第4章 同步控制 Synchronization ----互斥器(Mutexes)
摘要:Win32 的 Mutex 用途和 critical section 非常类似,但是它牺牲速度以增加弹性。或许你已经猜到了,mutex 是 MUTual EXclusion 的缩写。一个时间内只能够有一个线程拥有 mutex,就好像同一时间内只能够有一个线程进入同一个 critical sectio
阅读全文
第4章 同步控制 Synchronization ---哲学家进餐问题(The Dining Philosophers)
摘要:哲学家进餐问题是这样子的:好几位哲学家围绕着餐桌坐,每一位哲学家要么思考,要么等待,要么就吃饭。为了吃饭,哲学家必须拿起两支筷子(分放于左右两端)。不幸的是,筷子的数量和哲学家相等,所以每支筷子必须由两位哲学家共享。图4-1 显现出这种状态。? FAQ 16:我如何避免死锁? 哲学家都是有点倔强的人
阅读全文
第4章 同步控制 Synchronization ----死锁(DeadLock)
摘要:Jeffrey Richter 在他所主持的 Win32 Q&A 专栏(Microsoft Systems Journal,1996/07)中曾经提到过,Windows NT 和 Windows 95 在管理 dangling critical sections 时有极大的不同。在 Windows
阅读全文
第4章 同步控制 Synchronization ----critical section 互斥区 ,临界区
摘要:本章讨论 Win32 同步机制,并特别把重点放在多任务环境的效率上。撰写多线程程序的一个最具挑战性的问题就是:如何让一个线程和另一个线程合作。除非你让它们同心协力,否则必然会出现如第2章所说的“raceconditions”(竞争条件)和“data corruption”(数据被破坏)的情况。 在典
阅读全文
MTVERIFY
摘要:MTVERIFY宏即适用于GUI程序也适用于console程序,这个宏内部其实是记录并解释了Win32 GetLastError()的结果。如果Win32函数失败,MTVERIFY()会打印出一段简短的文字说明,在多线程编程时检查错误效果尤为突出, 现在我写在这里,供大家参考 使用时注意在头文件中加
阅读全文
#define WIN32_LEAN_AND_MEAN
摘要:不加载MFC所需的模块。用英语解释:Say no to MFC如果你的工程不使用MFC,就加上这句,这样一来在编译链接时,包括最后生成的一些供调试用的模块时,速度更快,容量更小。不过对于较大工程,MFC中的类还是非常有用的。我昨晚刚写了个2维引擎,需要加载PNG格式的图像;其中就用到了MFC中的CS
阅读全文
/MD、/MT、/LD( 使用 多线程版本 运行时库的C runtime library)
摘要:/MD、/MT、/LD(使用运行时库)(微软官网解释) Visual C++ 编译器选项 /MD、/ML、/MT、/LD 区别 指定与你项目连接的运行期库 /MT多线程应用程序 /Mtd多线程应用程序(DEBUG) /MD多线程DLL /MDd多线程DLL(DEBUG) 前段时间编译一个引用自己写的
阅读全文
EXIT_SUCCESS EXIT_FAILURE
摘要:在vc++6.0下头文件stdlib.h中定义如下: /* Definition of the argument values for the exit() function */ #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 在codeblocks的s
阅读全文
调用惯例Calling Convention (或者说:调用约定)
摘要:调用惯例影响执行效率,参数的传递方式以及栈清除的方式。 头两个DWORD(4字节)类型或者占更少 字节的参数被放入寄存器,其它剩下的参数 按从右至左的顺序压入栈 在WINDEF.H中定义:#define WINAPI _stdcall Dekphi 默认的调用惯例是:__register win32
阅读全文
HiWord()
摘要:#define HIWORD(I) ( ( WORD ) ( ( ( DWORD )( I ) >> 16) & 0xFFFF ) )。 这个宏传回一个WORD值(16位的无符号整数,范围从0到0xxFFFF)。 一般用来取得LPARAM的高位(高16位),用在滚动条相关的SB_THUMBTRACK
阅读全文
win32多线程编程
摘要:关于多线程多进程的学习,有没有好的书籍我接触的书里头关于多线程多进程部分,一是《操作系统原理》里面讲的相关概念 一个是《linux基础教程》里面讲的很简单的多线程多进程编程,再就是《VC开发》里头讲一点总觉得自己学的不透彻,多线程多进程这部分没啥信心 《win32多线程程序设计》华中科技大学出版社2
阅读全文
Hex to Int 【十六进制转十进制】
摘要:long HexToInt(char *msgline){ long strlength,chvalue,tvalue; WORD i; chvalue=0; strlength=strlen(msgline); for(i=0;i<strlength;i++) { if(msgline[i]=='
阅读全文
自己写实现char TO wchar_t 的转换
摘要:wchar_t CharToWChart(char nChar){ wchar_t nR; nR=nChar+32*256; return nR;}// wchar_t CharToWChart(char nChar0,char nChar1){ wchar_t nR; nR=(256+nChar0
阅读全文
PLT文件 和 DXF文件
摘要:PLT: CAM/CAD类似软件处理的图像文件的文件格式 DXF: AutoCAD(Drawing Interchange Format或者Drawing Exchange Format) 绘图交换文件。 DXF 是Autodesk公司开发的用于AutoCAD与其它软件之间进行CAD数据交换的CAD
阅读全文
什么是PWM信号
摘要:PWM信号脉宽调制PWM是开关型稳压电源中的术语。这是按稳压的控制方式分类的,除了PWM型,还有PFM型和PWM、PFM混合型。脉宽宽度调制式(PWM)开关型稳压电路是在控制电路输出频率不变的情况下,通过电压反馈调整其占空比,从而达到稳定输出电压的目的。PWM就是脉冲宽度调制的英文缩写,方波高电平时
阅读全文
替换应用程序DLL动态库的详细方法步骤 (gts.dll为例)
摘要:在C++ builder编译器IDE软件下 1、View -Project Manageer --找到需要替换的x.dll(gts.dll)对应的x.lib(gts.lib),然后Remove2、Project -Remove from project --查找是否dll是否任然存在,如果存在,则R
阅读全文
DLL生成与使用的全过程
摘要:由dll导出的lib文件: 包含了每一个dll导出函数的符号名和可选择的标识号以及dll文件名,不含有实际的代码(这里的lib文件和静态库是不一样的),其中的导出导入函数都 是跳转指令,直接跳转到DLL中的位置。基于这样一句话可以看出在编译一个程序的时候,编译器先通过头文件知道要使用函数的格式,然后
阅读全文
上升沿和下降沿
摘要:数字电路中,把电压的高低用逻辑电平来表示。逻辑电平包括高电平和低电平这两种。不同的元器件形成的数字电路,电压对应的逻辑电平也不同。在TTL门电路 中,把大于3.5伏的电压规定为逻辑高电平,用数字1表示;把电压小于0.3伏的电压规定为逻辑低电平,用数字0表示。数字电平从低电平(数字“0”)变 为高电平
阅读全文
Delphi系列书籍pdf 118本 网友吐血整理
摘要:第一步:进入官网首页http://bulo.hujiang.com/home/ 第二部:home/替换u/779988/diary/627936/ 来自沪江部落
阅读全文
TTabControl
摘要:1.TTabControl 组件的典型用法TTabControl 组件使用起来,根本不会使程序简单化,所以不提倡使用此组件,可以用TPageControl组件代替。与多页组件不同的是,虽然Tab 组件上可以有一组按钮,但它们的客户区是公用的,当用户选择其中某个按钮时,将触发OnChange 事件。在
阅读全文