完成端口模型
“完成端口”模型是迄今为止最为复杂的一种 I / O模型。然而,假若一个应用程序同时需
要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,
该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只有在你的应用
程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的 C P U数量的增
多,应用程序的性能也可以线性提升,才应考虑采用“完成端口”模型。要记住的一个基本
准则是,假如要为Windows NT或Windows 2000开发高性能的服务器应用,同时希望为大量套
接字I / O请求提供服务(We b服务器便是这方面的典型例子),那么I / O完成端口模型便是最佳
选择!
从本质上说,完成端口模型要求我们创建一个Wi n 3 2完成端口对象,通过指定数量的线程,
对重叠I / O请求进行管理,以便为已经完成的重叠I / O请求提供服务。要注意的是,所谓“完成
端口”阅读全文>
发表于 @ 2008年09月25日 01:29:00|评论(loading...)|编辑|收藏
C++字符串完全指引之二 —— 字符串封装类
原著:Michael Dunn
作者:Chengjie Sun
原文出处:CodeProject:The Complete Guide to C++ Strings, Part II
引言
因为C语言风格的字符串容易出错且不易管理,黑客们甚至利用可能存阅读全文>
发表于 @ 2008年09月18日 20:29:00|评论(loading...)|编辑|收藏
C++字符串完全指引之一 —— Win32 字符编码
原著:Michael Dunn
翻译:Chengjie Sun
原文出处:CodeProject:The Complete Guide to C++ Strings, Part I
引言
毫无疑问,我们都看到过像 TCHAR, s阅读全文>
发表于 @ 2008年09月18日 16:49:00|评论(loading...)|编辑|收藏
软件运行中输出数据到调试器
(乾坤一笑发表于2004-11-16 10:27:50)我们知道,Window系统中有一种称为Debuger的工具,可以捕获应用程序输出的调试信息,这是由OutputDebugString函数实现的。为什么要有这样一种调试机制呢?有果必有因:当一个大型程序中存在着一个非常隐蔽的错误(所谓隐蔽,指的是我从运行过程中发现程序不正常,但是即使检查源代码,也很难发现何处存在错误),于是乎,我们在运行过程中添加一些输出语句,把中间结果或者程序状态输出出来,根据大量的结果来推测程序究竟出错在何处。这种情况是绝非程序断点能够搞定的,因为有时候你断无可断。由于我们输出的debug信息只能由debuger来接受,所以,即使程序发布之后,也无须去掉这些调试点,这样对以后排阅读全文>
发表于 @ 2008年09月09日 21:43:00|评论(loading...)|编辑|收藏
在开发软件里,常常碰到要读取当前目录下的配置参数文件,或者打开当前目录下别的程序来运行,那么就需要获取当前进程的目录位置,这就需要使用函数GetCurrentDirectory获取当前进程所有在的目录。同时也可以使用SetCurrentDirectory阅读全文>
发表于 @ 2008年09月09日 21:19:00|评论(loading...)|编辑|收藏
下面的代码来自MSDN ,关键点在于要记得释放内存
// ConvertStringToBSTR.cpp
#include
#include
#pragma comment(lib, "comsupp.lib")
#pragma comment(lib, "kernel32.lib")
int main()
{
char* lpszText = "Test";
printf("char * text: %s\n", lpszText);
BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText);
wprintf(L"BSTR text: %s\n", bstrText);
SysFreeString(bstrText);
}
/阅读全文>
发表于 @ 2008年09月04日 13:40:00|评论(loading...)|编辑|收藏
The 7 deadly sins and 10 lessons of a failed startup
阅读全文>
发表于 @ 2008年07月24日 22:16:00|评论(loading...)|编辑|收藏