想接触C++多线程编程,需要从哪方面入手,有没有
发布网友
发布时间:2022-03-27 16:00
我来回答
共3个回答
热心网友
时间:2022-03-27 17:30
多线程编程的难点不在于锁,正常人看一下操作系统再写几个线程demo就可以基本理解了。对于C++而言,甚至连编写线程安全的类也不是难事。只需要用同步原语来保持对共享资源的访问即可。
我个人觉得最需要的就是实战,写Demo谁都会写。同步原语就那么几个,信号量,互斥量,条件变量等。但是怎么用呢?当你从点击星际争霸到和玩家匹配进行游戏,这当中程序是怎么运行的?
事件驱动是怎么驱动的?
就目前来说,我遇到的困难不是线程的死锁,而是对并发模型的理解。Actor,Reactor模式等。这些东西不实战,个人空想理解起来会吃力。
推荐《Linux多线程服务端编程》,这本书给我的观点是实战性很强,而且涉及面也比较广。后几章提到了分布式系统和作者对C++的思考以及STL algotrithm的运用。如作者所说:“对于面向对象,封装式必须的;但继承和多态耦合性太强,很不划算”我就很赞同
同时展示了一个用C++开发的网络库,不过虽然看了这本书,我还是没找到为什么要用C++的理由。我认为C的确可以很好地解决问题。C++的话就RAII算是真的有益处。
但读之前你需要有一定的C++和操作系统基础。当时买这本书的时候还觉得有点心疼,现在看看物超所值。(我那本CSAPP就翻了一章=-=)
总结:看现代操作系统第二章,同时结合C++11的thread库写经典Demo(生产者消费者问题等)
花两周左右。剩下的就是实战。如果不实战,你还是不知道这些东西在生产环境中是怎么使用的。
可以结合muo skynet等开源网络框架学习并发模型。
热心网友
时间:2022-03-27 18:48
陈硕的muo网络库可以看一下
热心网友
时间:2022-03-27 20:22
C++11 STL中的thread模板类不错,上手很简单