关于 《C++并发编程指南》的一些想法

大卷卷 发布于 2013/09/11 11:46
阅读 8K+
收藏 6

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

小伙伴们大家好,

最近几天我被小伙伴的热情惊呆了,感谢大家的热烈讨论,看来大家都是高手,很多人水平也比我高,我做过多的评价也不合适,我自己也说了,这本“书”(如果你把它看做是书的话)现在还只是自己以前写的一系列介绍 C++11 多线程支持库和原子操作库的笔记,确实还不具备成为书的条件。

至于说究竟什么是并发编程, C++ 适不适合做并发编程,我也相信每个人都有他自己的理解,强行地把自己的观点灌输到别人身上是不对的。不过既然 C++03 标准没有语言级别的原子操作和多线程支持,但是在 C++11 中却加了这两项内容,如果某些小伙伴还坚持认为“C++ 和 并发 没有任何关系, 用C++做并发, 是最为愚蠢的一种行为.”,那这些小伙伴对 C++ 的理解是不是还停留在10年前呢,现在都 2013 年了,看看 WG21 N3242(虽然C++11正式标准巨贵,但是这个草案是免费的,一本 1134 页的大部头) 吧,看看 C++ 新标准的 memory model 吧,右值引用,lambda 表达式,正则式,智能指针,哪个不是激动人心的新特性。不知道喷 C++ 的小伙伴们对 C++11 又了解多少,如果对 C++11 新标准所知不多,真的建议去看看,不要看网上乱七八糟的转载小品文,而是直接看C++标准(草案)(可能又有人说我装B了,但至少我自己是看标准的,也建议小伙伴们都去看标准)。

也有人说我没有搞清并发是什么,我确实承认自己对并发理解得不深,某某同学说

并发控制是一种操作系统行为 并且, 所有的实现, 都是通过呼叫操作系统原语来实现

确实没错,语言(C++,Java,Erlang)层面的并发控制确实是调用的操作系统提供的并发原语(当然也有可能直接调用某些汇编指令),但操作系统的并发也是由 CPU 支持的。如果真的要说并发的属于哪个层次的,我想各个层次都有,但最终最底层的无非是 CPU 硬件层次的并发,操作系统只是帮你管理硬件资源的,这个大学教材里也是这么写的吧。所以,我所理解的并发只是个概念,它在各个层次都有,语言级别,操作系统级别,硬件级别,只是抽象层次不同而已,没有必要纠结并发只能处于哪个级别。想想你在用 C++ 写多线程程序的时候,会去直接操作 CPU 么,很明显不会,直接使用 std::thread、std::mutex(对,现在你可以直接使用 std 命名空间里面的 thread, mutex, condition_variable,哦还有 future 了(类似 Java)) 就行了,编译器和操作系统会帮你管理好的。因此,我所理解的并发不是非要处在某个特定层次的操作才叫并发。C++ 语言级别的并发只是提供了你一个抽象,让你不用去管底层是怎么实现的,Java 也是如此。

写了这么多,我也不想引起大家对某一门特定语言优劣的口水战,更不想发生任何语言上的人身攻击,技术嘛,适合自己的应用场景就好。

最后,我承认现在这本“书”(如果你把它看做是书的话)写的不好,毕竟才刚刚开始嘛,如果一开始就做得很好了我就直接去找出版社了,任何东西都是由不好到好的,中间的过程可能很痛苦很漫长,后面我会持续更新“书”(如果你把它看做是书的话)中的内容的,欢迎小伙伴们挑毛病提问题,但是。。。和谐社会,口水战可以有,但是不要有人身攻击 ;-)

加载中
0
菜鸟程序员
看完这篇帖子,发现楼歪的好远啊。。。。。
0
billzheng
billzheng
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
j
jearry.zhou
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
宏哥
宏哥
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
魑魅魍魉摼
魑魅魍魉摼
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
i
icosagon
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
sinpo
sinpo
支持作者的分享、探索和总结的精神。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部