想接触C++多线程编程,需要从哪方面入手,有没有

 我来答
硪丨暧恋
2018-03-16 · TA获得超过8980个赞
知道大有可为答主
回答量:5336
采纳率:93%
帮助的人:2176万
展开全部
多线程编程的难点不在于锁,正常人看一下操作系统再写几个线程demo就可以基本理解了。对于C++而言,甚至连编写线程安全的类也不是难事。只需要用同步原语来保持对共享资源的访问即可。
我个人觉得最需要的就是实战,写Demo谁都会写。同步原语就那么几个,信号量,互斥量,条件变量等。但是怎么用呢?当你从点击星际争霸到和玩家匹配进行游戏,这当中程序是怎么运行的?
事件驱动是怎么驱动的?
就目前来说,我遇到的困难不是线程的死锁,而是对并发模型的理解。Actor,Reactor模式等。这些东西不实战,个人空想理解起来会吃力。
推荐《Linux多线程服务端编程》,这本书给我的观点是实战性很强,而且涉及面也比较广。后几章提到了分布式系统和作者对C++的思考以及STL algotrithm的运用。如作者所说:“对于面向对象,封装式必须的;但继承和多态耦合性太强,很不划算”我就很赞同

同时展示了一个用C++开发的网络库,不过虽然看了这本书,我还是没找到为什么要用C++的理由。我认为C的确可以很好地解决问题。C++的话就RAII算是真的有益处。
但读之前你需要有一定的C++和操作系统基础。当时买这本书的时候还觉得有点心疼,现在看看物超所值。(我那本CSAPP就翻了一章=-=)
总结:看现代操作系统第二章,同时结合C++11的thread库写经典Demo(生产者消费者问题等)
花两周左右。剩下的就是实战。如果不实战,你还是不知道这些东西在生产环境中是怎么使用的。
可以结合muduo skynet等开源网络框架学习并发模型。
匙诌802
2018-02-23
知道答主
回答量:11
采纳率:100%
帮助的人:3.7万
展开全部
陈硕的muduo网络库可以看一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a_ab_bAB
2018-02-28
知道答主
回答量:35
采纳率:66%
帮助的人:8.7万
展开全部
C++11 STL中的thread模板类不错,上手很简单
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式