
C/C++
zhuky
执着 追求
从事于嵌入式软件开发。具体产品:智能家居、数码相框、机顶盒、PMP等
展开
-
C++深度探索系列:智能指针(Smart Pointer)
一、剖析C++标准库智能指针(std::auto_ptr) 1.Do you Smart Pointer? 2.std::auto_ptr的设计原理 3.std::auto_ptr高级使用指南 4.你是否觉得std::auto_ptr还不够完美?二、C++条件,寻找构造更强大的智能指针(Smart Pointer)的 策略 1.支持引用记数的转载 2009-05-06 10:31:00 · 780 阅读 · 0 评论 -
多线程服务器的常用编程模型
多线程服务器的常用编程模型 陈硕 (giantchen_AT_gmail)Blog.youkuaiyun.com/Solstice2009 Feb 12 建议阅读本文 PDF 版下载: http://files.cppblog.com/Solstice/multithreaded_server.pdf 本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常用的线程转载 2010-03-10 16:15:00 · 1208 阅读 · 0 评论 -
当析构函数遇到多线程──C++ 中线程安全的对象回调
请尽量阅读本文 PDF 版:http://www.cppblog.com/Files/Solstice/dtor_meets_mt.pdf 豆丁亦可,内容略微滞后: http://www.docin.com/p-42460300.html这里是从 word 直接粘贴过来,脚注链接都丢失了。 摘要编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身转载 2010-03-10 15:30:00 · 1098 阅读 · 0 评论 -
《多线程服务器的适用场合》例释与答疑
陈硕 (giantchen_AT_gmail) Blog.youkuaiyun.com/Solstice 2010 March 3 - rev 01《多线程服务器的适用场合》(以下简称《适用场合》)一文在博客登出之后,有热心读者提出质疑,我自己也觉得原文没有把道理说通说透,这篇文章试图用一些实例来解答读者的疑问。我本来打算修改原文,但是考虑到已经读过的读者不一定会注意到文章的变动,干脆另写一篇。为转载 2010-03-10 16:11:00 · 855 阅读 · 0 评论 -
模板特化,全特化,偏特化,全部特化,部分特化
这几个名词真是把人搞混了(是因为有的著作,甚至名著以讹传讹),我最近整理了以下,看看大家的意见如何。模板特化:任何针对模板参数进一步进行条件限制设计的特化版本。《泛型思维》全特化就是全部特化,即针对所有的模板参数进行特化。《c++ primer》偏特化就是部分特化,即针对部分模板参数进行特化。《c++ primer》全特化和偏特化的定义不是很严格,所以有的时候不容易让人理解。举例如转载 2010-02-24 09:18:00 · 1078 阅读 · 0 评论 -
C++学习心得
1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一原创 2010-02-23 09:30:00 · 752 阅读 · 0 评论 -
offsetof 函数解析
offsetof(TYPE, MEMBER)该宏在Linux内核代码(版本2.6.22)中定义如下:#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER); 分析:(TYPE *)0,将 0 强制转换为 TYPE 型指针,记 p = (TYPE *)0,p是指向TYPE的指针,它的值是0。那么 p->MEMBER 就转载 2009-12-17 16:31:00 · 3926 阅读 · 0 评论 -
C++接口的设计和声明
任何接口设计的一个准则:让接口容易被正确使用,不容易被误用。 理想上:如何客户企图使用某个接口缺没有获得他所预期的行为,这个代码不该通过编译;如果代码通过了编译,他的行为就该是客户所想要的。 1. 导入外覆类型(wrapper types)2. 让types容易被正确使用,不容易被误用。尽量领你的types行为与内置types一致。 3. 设计class犹如设计type原创 2010-02-23 10:52:00 · 3949 阅读 · 0 评论 -
资源管理
C++中常见的资源就是动态内存分配,常见的还有文件描述符、互斥锁、图形界面的字形和笔刷、数据库连接、以及网络sockets。不论哪一种资源,当你不再使用它时,必须将它还给系统。 一、以对象管理资源 1. 获得资源后立刻放进资源管理对象内。 2. 管理对象运用析构函数确保资源被释放。(if 资源释放时导致抛出异常,又该如何呢?) 标原创 2010-02-23 09:16:00 · 641 阅读 · 0 评论 -
C常用代码
一、批量转移字符到缓冲区bufptr = buffer;void bufwrite(char* p,int n){ while(n>0) { int k,rem; if(bufptr == &buffer[N]) flushbuffer(); rem = N - (bufp原创 2010-01-28 20:57:00 · 642 阅读 · 0 评论 -
多线程服务器的适用场合
陈硕 (giantchen_AT_gmail) Blog.youkuaiyun.com/Solstice 2010 Feb 28这篇文章原本是前一篇博客《多线程服务器的常用编程模型》(以下简称《常用模型》)计划中的一节,今天终于写完了。“服务器开发”包罗万象,本文所指的“服务器开发”的含义请见《常用模型》一文,一句话形容是:跑在多核机器上的 Linux 用户态的没有用户界面的长期运行的网络应用转载 2010-03-10 16:19:00 · 1010 阅读 · 0 评论