从http://www.epubcn.org/read.php?tid=19035&fpage=7 看到以下文字:

如果你喜欢自己发明轮
子,那我告诉你我遇到的两件事:一次是写一个通信部件,结果写完做unit
test时发现有死锁,费半天劲搞定,然后看到Doug的一篇早期论文里的示例代码也有这个死锁问题,后来又看了ACE的代码,发现就把这个问题解决掉
了,而且解决方法跟我的方法一模一样。还有就是用select来取socket handle的ready状态,然后分派到各个event
handler。一开始觉得ACE的Reactor和Acceptor-Connector复杂,没必要照搬,就自己写了个简单的,结果后来发现出了各种
各样的问题,从数据传递到线程冲突,好不容易把那些问题都解决掉了结果发现代码也变得复杂了而且不优雅而且还低效,若要再改好一点那就又变得跟ACE一样
了。所以自己再去把那些地雷和陷阱踩一遍实在是浪费时间。
 
关于设计时的一些取舍,如果你在犹豫选择同步还是异步I/O,犹豫哪些部分异
步处理哪些部分同步处理,那么也可以看POSA2和CNPv1、v2。书中对Reactor、Proactor、Half-Sync/Half-
Async、Leader/Followers,Active Object、Monitor
Object等作的详细的讨论包含了各种可行方案相比较的优缺点,这非常有助于你以较少的代价尽早做出正确的构架决策。
--------------------------------------------------------------------------------------
我自己的经历也和博主类似(加黑的部分),在很多领域问题都是相似的,不过问题是:不经历这样的问题(浪费或多或少),是否能直接深刻地通往问题的答案。

标签: none

添加新评论