非对称不是好主意,原因就在于软件上。没有程序可以在被执行前预知过程与结果.同理,单线程软件可能在某特定情况下产生高负载,多线程软件在没有被执行前系统也无法判定它会用到多线程. 而且,线程的调度从来都是由OS负责,指导思想就是为了"对称"(牵涉到虚拟内存,页面操作,缓存管理等一系列问题).再说了,软件不可能永远处在100%多线程状态下.试想,如果一个程序运行到多线程部分,OS将其分配给多核部分处理,同时刚好单核部分又在处理另外程序的单线程任务.这时,假如此程序多线程部分结束,而恰好该程序的单线程任务部分的负载大于单核部分正在处理的部分,怎么办?这样假定负载最高的分配给单核部分就没有办法实现了. 非对称插CPU,硬件角度,很容易,软件角度,很痛苦.需要修改OS调度的同时,软件也要相应修改.几乎没程序员愿意干这种事,属于付出远远大于回报那种。对程序员来说,他们宁愿有额外的硬件资源来利用而不是去操心怎么去具体管理资源。而且,软件调用的线程越多,debug的难度同时直线上升,这也是为什么很少有程序员愿意写带有大量线程的软件的原因。 |