随笔分类 - c/c++
CreateEvent的用法
摘要:事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。产生事件对象的函数如下:HANDLE CreateEv...
阅读全文
深入理解CRITICAL_SECTION
摘要:临界区是一种防止多个线程同时执行一个特定代码节的机制,这一主题并没有引起太多关注,因而人们未能对其深刻理解。在需要跟踪代码中的多线程处理的性能时,对 Windows 中临界区的深刻理解非常有用。本文深入研究临界区的原理,以揭示在查找死锁和确认性能问题过程中的有用信息。它还包含一个便利的实用工具程序,...
阅读全文
const型类成员
摘要:一、关于const类成员函数有以下几个需要注意的地方:1. 在普通的非const成员函数中,this的类型是一个指向类类型的const指针,而const成员函数中,this的类型是一个指向const类类型对象的const指针。由于这个原因:(1) 返回值 函数名 (参数列表) const {…} 这...
阅读全文
用 const 限定类的成员函数
摘要:类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。 在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限...
阅读全文
C++文件读写详解(ofstream,ifstream,fstream)
摘要:c++bufferiosiostreamfilestream目录(?)[+]在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view pl...
阅读全文
C++中回调函数(CallBack)的使用
摘要:如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现成员函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的...
阅读全文
SetTimer函数的用法
摘要:什么时候我们需要用到SetTimer函数呢?当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数 了。使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数...
阅读全文
CString转换成int CString类相应函数
摘要:CString 型转化成 int 型 把 CString 类型的数据转化成整数类型最简单的方法就是使用标准的字符串到整数转换例程。 虽然通常你怀疑使用_atoi()函数是一个好的选择,它也很少会是一个正确的选择。如果你准备使用 Unicode 字符,你应该用_ttoi(),它在 ANSI 编码系...
阅读全文
HeapAlloc、GlobalAlloc和new等内存分配有什么区别么?
摘要:查找了一些 new , GlobalAlloc, HeapAlloc分配内存方式的区别。转了一些资料//===========================================================//下面是资料1:1. GlobalAlloc函数和new()的区别。1>ne...
阅读全文
C语言中字符数组和字符串指针分析
摘要:这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这做个小总结,也算加深下自己的印象,写了下面的测试程序:#include int main(int ...
阅读全文
shutdown 和closesocket
摘要:来,咱们彻底的来讨论一下这个shutdown 和closesocket从函数调用上来分析(msdn):一旦完成了套接字的连接,应当将套接字关闭,并且释放其套接字句柄所占用的所有资源。真正释放一个已经打开的套接字句柄的资源直接调用closesocket即可,但要明白closesocket的调用可能会...
阅读全文
WSAStartup( )
摘要:这里用通俗的语言解释一下这个函数,就类似于opencv一样,要添加链接库函数,cv.lib等,要添加到附加依赖项,或者通过#pragma comment(lib,”cv.lib“)一样,然后才能包含头文件进行各种函数的调用。当然了,socket编程要调用各种socket函数,但是需要库Ws2_32...
阅读全文
setsockopt的作用
摘要:之前一直没明白setsockopt的作用。原来是用来设置socket的属性。setsockopt设置SO_REUSEADDR。socket关闭之后并不会立即收回,而是要经历一个TIME_WAIT的阶段。windows下最多可以达到4分钟。所以在这个时候对这个端口进行重新绑定就会出错。所以需要先设置S...
阅读全文
GetQueuedCompletionStatus的返回值
摘要:完成端口GetQueuedCompletionStatus返回值的问题先看看GetQueuedCompletionStatus函数的完整声明:BOOL GetQueuedCompletionStatus(HANDLE CompletionPort, LPDWORD lpNumberOfBytes, ...
阅读全文
在完成端口中使用GetAcceptExSockaddrs
摘要:MSDN:When using AcceptEx, the GetAcceptExSockaddrs function must be called to parse the buffer into its three distinct parts (data, local socket addre...
阅读全文
PostQueuedCompletionStatus
摘要:PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatus函数的定义: BOOL PostQueuedCompletionStatus( HANDLE ...
阅读全文
PostQueuedCompletionStatus详解
摘要:PostQueuedCompletionStatus函数,向每个工作者线程都发送—个特殊的完成数据包。该函数会指示每个线程都“立即结束并退出”.下面是PostQueuedCompletionStatus函数的定义: BOOL PostQueuedCompletionStatus( HANDLE ...
阅读全文
完成端口(IOCP)怎么判断某个连接是否断开
摘要:完成端口函数:[csharp] view plaincopyBOOLGetQueuedCompletionStatus(HANDLECompletionPort,LPDWORDlpNumberOfBytes,PULONG_PTRlpCompletionKey,LPOVERLAPPED*lpOverl...
阅读全文
我对CONTAINING_RECORD宏的详细解释
摘要:宏CONTAINING_RECORD的用处其实还是相当大的, 而且很是方便, 它的主要作用是: 根据结构体中的某成员的指针来推算出该结构体的指针! 下面从一个简单的例子开始说起: 我们定义一个结构体, 同时类型化:typedef struct{ int a; int b; ...
阅读全文