crackhopper
2020-05-13 11:25:25 +08:00
poll 没用过,既然要实现异步还加锁,不知道什么操作; IO 相关的 buffer 互相独立我觉得更好。另外更好的异步方式,我觉得是用系统自带的异步接口,按照 event-driven 的模式来构建,同时也做个线程池对把部分不支持异步的操作异步化。
RAII,可能实现起来最需要慎重考虑的是异常安全+线程安全 /防止死锁,不知道这块你们 CTO 考虑的如何。但很多人模板水平确实太差,不会用模板实现 mixin/traits,写的工具用起来很麻烦。
如果就用 reference count 管理内存,直接用标准库的智能指针确实更好,没必要自己实现还实现错了。不过我个人觉得更应该用 GC 。很多人并不会用智能指针,也会带来灾难。尤其是区分不清楚 weak, shared, unique 的使用场景。
单例这块我同意楼主说法,static 初始化可以保证线程安全,但也要注意编译器版本探测和对应的开关是否打开;另一个一劳永逸的办法是手动在多线程创建前初始化全局单件。动态创建的,很难保证线程安全。加锁 double-check,也会在指令乱序下失效。
我估计你们 CTO 就是纯粹靠年限混了个 title 。实际 C++水平,也就在高级和资深区间?
代码不重要,只要产品能盈利,这个我是赞同的。所以更不应该用 C++,直接 nodejs 不香么。或者 go,如果喜欢类型系统的话。