陈硕的Blog

共2页: 1 2 
@chaogu
Linux 下呢?有没有 busy waiting?
@chaogu
我没有遇到过,你的线程函数长什么样?用哪种同步机制?
1. 既然对象肯定要用到而且会在main()里边析构,那么用一个全局的指针不就行了?在main()里边构造一个局部对象,把全局指针指向它。完全不必用宏,也不必手动释放对象。
2. 为了防止在别处意外构造对象,把构造函数的参数定为 enum YouShouldNotConstructTheObjectUnlessInMain,这样一搜源代码就知道有没有人故意误用。
3. 为什么要默认使用虚析构?既然构造函数是private的,说明根本不可能创建派生类的对象,虚析构意义何在?
@dennis-zhuang
> 不支持udp是基于什么考虑?
因为我没搞过 UDP 编程,没有一手的经验。

> timerQueue替换成优先队列也是O(lg(n))的复杂度吧,而不是O(1)
删除的复杂度是 O(ln n)。插入的平均复杂度是 O(1),最坏复杂度是 O(ln n)。已订正原文,多谢。

> 貌似没有实现基于select的Poller。
确实,因为 select 比 poll 限制更多,有了 poll 和 epoll,没必要再实现 select。

> 代码很清晰,感谢。
thanks.
@路青飞
因为我对 Windows 编程不熟。
@kk
用 snprintf 是为了避免在堆上分配内存,ostringstream 则正好相反;在多线程程序里,内存分配可能会加锁,用栈上的缓冲区能避免无谓的加锁。
用 fprintf 是因为它是线程安全的,cout/cerr 则相反。cerr << a << b; 是两次函数调用,中间可能会被打断进行上下文切换,造成输出内容不连续,插入了其他字符。而 fprintf(stderr, "%s %d", a, b); 是一次函数调用,而且是线程安全的,打印的内容不会受其他线程影响。
另外我没有见过谁在产品代码里用 iostream。
目前 Google 公开的大量 C++ 代码都遵循了这份规范。
这些公开的代码的质量都很高,值得借鉴。
re: 对 C++ 历史的个人观点 陈硕 2010-04-09 11:03
@欲三更
这正好证明了我的观点,如果标准库里没有,每个第三方 library 都会自己造一套。
std::string 加入标准大约是在 1994 年,然后又被 STL 拖延,到 1998 年标准才发布。
而 QT, ACE, MFC 的开发均早于 std::string。
QT 是 1991 年开始开发,MFC 最早在 1992 年发布,1993 年 ACE 的版本号已经升到了 2.12。

假如 C++ 在 1985 年提供 string,还会造成这样天下大乱的局面吗?
re: 对 C++ 历史的个人观点 陈硕 2010-04-07 00:26
@OwnWaterloo
已在正文中答复。
@coder
在我的 Ubuntu 9.10 + Evince Document Viewer 2.28.1 下看没有问题。
请你用的哪个 Linux 发行版?什么版本的 PDF 阅读器?
共2页: 1 2 
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

随笔分类

随笔档案

相册

搜索

最新评论

阅读排行榜

评论排行榜