» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[电脑] 【双核求解】双核cpu的运行原理

双核是真的同时运行的


TOP

操作系统的进程库线程库和进程管理都已经做得很完善了,接口也都封装得很好,但问题就在于应用层的程序员水平良莠不齐,没有能力去把握好多进程多线程的使用。其实这玩意儿早就不是什么新概念了,即使在单核cpu时代,操作系统也早已有抢占式的机制,同样要用到锁机制,有锁就要考虑睡眠,就要避免逻辑死锁,但那时候这些东西都是底层内核开发人员需要掌握的东西,只不过现在延伸到了应用层

早先玩过HDL语言的,那才叫牛X,整个代码结构就是并发的,因为HDL是直接对应生成硬件电路的



TOP

其实应用层的多进程多线程编程一直都是很普遍的,最简单普遍的例子就是界面的响应,程序本身在跑,还要同时响应键盘鼠标的操作。但是通常这些应用的接口封装得太高级了,都让人看不出是多线程了


TOP

当然除了让程序安全的并行运行以外,效率也是要考虑的,如果处处都用同步锁,那么多核将因为不能提高性能而变得毫无意义,甚至于可能因为过多的非睡眠锁(应用层没有这样的锁)而造成系统性能的严重下降

TOP

应用开发中为什么不用多线程,因为应用层程序员觉得难以处理数据同步问题,逻辑死锁问题,事实上这确实不好处理,极易出bug。而在并发数非常高的场合比如处理socket网络连接请求时又不适合用线程解决因为系统开销太大

linux下的线程库出现得很晚,而后来的pthread在底层根本就是不同flags的vfork进程,很多程序员更喜欢写时拷贝的多进程,因为进程通信怎么也比加锁来得好搞。这方面windows程序员比较悲剧一些,他们被告知开进程的系统开销与开线程相比是不可忽略的:D

至于利用多核提高效率,最大的问题是合理地把任务分离,这又是让人头疼的问题

TOP

发新话题
     
官方公众号及微博