选择多线程编程环境

Intel已经宣布其生产的CPU的主频将不会提高到5Ghz以上了,04年2月你可以买得起的最快的PC是3G,现在是4G的,摩尔定律毕竟不是一个物理定律。所有原子的尺度基本上都在0.1nm左右,要构成电路,如果需要30个原子,尺度是3nm,半导体生产的重要步骤是光刻,我们不能用波长为3nm的光来分辨光刻3nm的尺度,那样波长光通过3nm的间隔会产生衍射现象,虽然在晶体衍射分析中衍射现象是受欢迎的,但是这里却将导致制造CPU失败,更短波长的光实际上已经是X射线了……好了,这不是我们今天要讨论的话题了,(如果你对纳米科技感兴趣,参考http://nanozine.com/)总之,CPU技术将向并行计算方向发展,对于我们程序员来说,多线程时代已经到来了。

好吧,还是降降温,多线程编程(MT——multithreaded programming)不是一个新概念了,《PThreads Primer A Guide to Multithreaded Programming》,列举了很多不应该考虑MT的情况,但无论如何,从学生角度看,MT会的人不会多,我自然愿意学学。

现在的问题是我们到底选择在那个多线程编程环境下操作?有很多选择:

1.POSIX线程库如:pthreads;
2.Win32API线程库;
3.dotNet库中的System.Threading(好吧,我不是有意要漏掉Java的,但这里是cnblogs,你知道……)

pthreads是符合POSIX标准的开源线程库,也是很多MT书上讲解的语言,虽然pthreads不支持Win32平台,但是网上还是有称作Pthreads-win32的LGPL库,所以很自然的,我在1和2之间肯定选择1,毕竟书籍多,代码多总是好的,而且既然学习C/C++已经那么麻烦了,为何不更近一步,写出可跨平台的代码?

System.Threading和pthreads的取舍就比较困难了,我最终选择dotNET,原因可能比较盲目,因为这里是cnblogs。无论如何,开始学习总是很方便,但是坚持下去就比较困难了,dotNET的多线程书籍较少,一本Wrox C# Threading Handbook配其他一点书应该差不多了,而且毕竟MT困难的在理念,有时候适当参考一下pthreads也不是不可以。

而且我不是没有目的的学,我一直在考虑编写一个离散事件仿真软件,那类软件CPU就是瓶颈……

posted @ 2005-02-07 21:48  丁丁  阅读(1055)  评论(0)    收藏  举报