- 博客(12)
- 资源 (4)
- 收藏
- 关注
原创 VC++多线程编程 (转载)
十个例子清晰列举啦多线程编程的奥妙。 VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好.一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond(){Sle
2011-05-29 12:41:00 703
原创 Unicode字符列表(超完整)
<br />注:除非有特别指明,否则以下符号皆属“半角”而非“全角”。<br /> <br />代码 显示 描述 <br />U+0020 空格 <br />U+0021 ! 叹号 <br />U+0022 " 双引号 <br />U+0023 # 井号 <br />U+0024 $ 价钱/货币符号 <br />U+0025 % 百分比符号 <br />U+0026 & 英文“and”的简写符号 <br />U+0027 ' 引号 <br />U+0028 ( 开 圆括号 <br />U+0029 ) 关
2011-05-28 09:08:00 35404
原创 WinSock : I/O完成端口
<br />引言<br />要想编写一个高性能的服务器应用程序,必须实现一个高效的线程模型。让太少或者太多的服务器线程来处理客户的请求,都可能导致性能问题。例如,如果一个服务器创建单个线程来处理所有的请求,那么客户端可能长期等待而得不到响应,因为服务器同一时刻只能忙于处理一个请求。当然单个线程也能并发处理多个请求,当I/O操作被启动时,它可以从一个请求切换到另一个请求,但是这种结构相当复杂,并且不能充分利用多处理器的优势。在另一个极端,服务器可以创建一个大规模的线程池,这样几乎每一个客户请求都可以由一个专门
2011-05-26 17:26:00 826
原创 WinSock重叠I/O模型
<br />一.重叠I/O的概念及应用<br />当调用ReadFile和WriteFile时,如果最后一个参数lpOverlapped设置为NULL,那么线程就阻塞在这里,直到读写完指定的数据后,它们才返回。这样在读写大文件的时候,很多时间都浪费在等待ReadFile和WriteFile的返回上面。如果ReadFile和WriteFile是往管道里读写数据,那么有可能阻塞得更久,导致程序性能下降。<br />为了解决这个问题,windows引进了重叠I/O的概念,它能够同时以多个线程处理多个I/O。其实你
2011-05-26 17:25:00 723
原创 WinSock 异步I/O模型
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了五种I/O模型,分别是:■ 选择(select);■ 异步选择(WSAAsyncSelect);■ 事件选择(WSAEventSelect);■ 重叠I/O(Overlapped I/O);■ 完成端口(Completion Port)(+线程池技术) 。 每一种模型适用于一种特定的应用场景。大家应该针对自己应用程序的需求,综合考虑到程序的扩展性和可移植性等因素,作出自己的选择。 待
2011-05-26 16:35:00 1343
原创 Socket结构区别
<br /> <br />struct sockaddr { <br />unsigned short sa_family; <br />char sa_data[14]; <br />}; <br />上面是通用的socket地址,具体到Internet socket,用下面的结构,二者可以进行类型转换 <br /><br />struct sockaddr_in { <br />short int sin_family; <br />unsigned short int sin_port; <br
2011-05-26 15:52:00 678
原创 CSocket关于连接和阻塞!!
<br />基于阻塞发送和接收二进制数据。<br />比如可以Client端发送,Server端接收<br />Server端:m_recvive. Receive(void*lpBuf,intnBufLen,intnFlags=0);<br />Client端:m_client. Send(constvoid*lpBuf,intnBufLen,intnFlags=0);<br />接着再分析一下各个类中提到的常用方法的同步特性。<br />Listen(…):执行后不管有没有连接,立即返回。<br />C
2011-05-26 00:33:00 3115 1
原创 linux环境下的c++编程
<br /> 就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样。Emacs, vi, eclipse, anjuta,kdevelop等层出不穷。<br /><br />Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户。例如,VS2005集成了编辑器,宏汇编ml,C /C++编译器cl,资源编译器rc,调试器,文档生成工具, nmake。它们以集成方式提供给最终用户,对于初学者而言十分方便。但是,
2011-05-25 22:55:00 39397 3
原创 C风格struct结构体的对齐
<br /> C语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。内容虽然很基础,但一不小心就会弄错。写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?<br /> 开始学的时候,也被此类问题困扰很久。其实相关的文章很多,感觉说清楚的不多。结构体到底怎样对齐?<br /> 有人给对齐原则做过总结,具体在哪里看到现在已记不起来,这里引用一下前人的经验(在没有#pragma pack宏的情况下):<b
2011-05-25 17:47:00 1108
原创 C++内存分配之NEW DELETE
<br />1)new 和 delete 必须成对出现;<br />2)new 底层调用操作系统堆内存管理函数HeapAlloc来分配堆内存;<br />3)delete 操作符底层调用API接口函数HeapFree来释放堆内存;<br /><br />数据的3种存储方式。<br />1。静态区: 全局变量或者使用static约束的变量;<br />2。堆: 程序执行时分配的内存; 如NEW操作所分配的动态内存 <br />3。栈: 函数调用,局部变量。<br />以
2011-05-18 17:40:00 837 1
原创 fstream IO流类的使用:C++读取文件txt,循环逐行输出(转)
<br />#include<iostream><br />#include<iomanip><br />#include<fstream><br /><br />usingnamespacestd;<br /><br />int main(){<br />char buffer[256];<br />ifstream myfile ("c://a.txt");<br />ofstream outfile("c://b.txt");<br /><br />if(!myfile){<br />cout<<"U
2011-05-18 12:31:00 8920 1
原创 软件系统开发中的数据交换协议
<br />当一个人要把一件事情告诉另外一个人的时候,我们可以通过电话、邮件、短信、IM工具或者当面说的方式来交流。这种方式类似于系统数据交换要通过 tcp、udp、管道等等的方式实现。当两个人交流的时候,我们需要一种共同的语言才能明白对方的意思,同样的,两个系统要交换数据,也需要定义一种双方都明白的协议,我们称为“数据交换协议”。<br /> 数据交换协议<br /> 数据交换协议的目的是让两个系统进行正确的数据交互。所以几乎各种开发语言都提供了方便使用的数据交换功能。比如说使用JAVA语
2011-05-13 23:47:00 889
《C++ STL开发技术引导》配套光盘(16章全)
2011-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人