返回信息流LZ既想看redis源码,又想深入设计模式,还想深入pthread和内存管理。。
下了PDF之后就感觉好多啊,学不完了。。况且马上就要工作了,貌似也没什么时间。
难道真要我拼命抽出空余时间吗?那岂不是真成了只会码代码的diao丝?
求拍醒
这是一条镜像帖。来源:北邮人论坛 / soft-design / #47031同步于 2016/3/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
对编程、计算机知识很贪肿么办
BaiWfg2
2016/3/21镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
设计模式最简单(去图书馆借四人帮的书来看),其次是redis,最难的是内存管理
至于多线程,不建议从pthread看起,建议先看go或者erlang的多线程,然后是java的多线程(直接从1.8学起),然后是C11的多线程,最后以批判的态度看posix和pthread。
暖神对于多线程为什么是这么建议呢?
【 在 nuanyangyang 的大作中提到: 】
: 设计模式最简单(去图书馆借四人帮的书来看),其次是redis,最难的是内存管理
: 至于多线程,不建议从pthread看起,建议先看go或者erlang的多线程,然后是java的多线程(直接从1.8学起),然后是C11的多线程,最后以批判的态度看posix和pthread。
【 在 tastier 的大作中提到: 】
: 暖神对于多线程为什么是这么建议呢?
最简单的多线程编程模式是“消息传递”模式,用“锁”的“共享内存”模式次之,用“原子内存”操作的“共享内存”模式最难。
因为这个原因,Go,Erlang的默认模式都是消息队列模式,甚至都有语言级的支持。当然最推荐。
用锁的共享内存模式,有点难。之所以推荐Java然后才是C++11,是因为Java语言里并没有“未定义行为”,即使出错了,也会以某种特定的形式出错,在出错的时候往往会给出友好的提示。而C++的话,一旦出错了,就是“未定义行为”,有可能看似一切安好,但实则出错;有可能程序崩溃,有可能机器冒烟,有可能恶魔从你的鼻子里飞出来,有可能你家的猫怀孕了……总之什么都可能发生,做C++程序员很痛苦的。
pthread是操作系统提供的接口。我觉得这是几十年来人们的误会:认为多线程之间的同步(锁、信号量……)机制应该操作系统来提供,但这是不对的。多线程编程需要编程语言本身的支持(这就是为什么用GCC编译pthread程序的flag是-pthread而不是-l pthread,因为并不仅仅是链接一个库),光靠库的支持是不够的。所以我推荐在编程语言层次上支持的多线程。Java1.5、C++11都有memory model。C++11和C11之前对多线程只字不提,所以几乎不可能用C/C++11之前的版本写出可靠的多线程程序。
原子内存操作的话……祝你好运【逃