我正在寻找一个开发工作,并看到许多列表指出开发人员必须精通多线程.这既出现在Java作业列表中,也出现在UNIX上涉及"系统编程"的C++列表中.
在过去的几年里,我一直在使用Java并使用其各种同步机制.
在90年代后期,我做了很多C++工作,虽然线程很少.然而,在大学里,我们在Solaris上使用了线程.
我的问题是,与Java开发人员相比,C/C++开发人员面临的问题是否存在显着差异,以及解决这些问题的任何技术是否存在根本的不同.Java显然包括一些更好的机制和集合的同步版本等.
如果我想在UNIX上刷新或重新学习线程,那么最好的方法是什么?我应该看哪个图书馆?在c ++中是否有一些关于线程的最新教程?
线程的基本挑战(例如同步,竞争条件,线程间通信,资源清理),但Java使线程更易于管理,包括垃圾收集,异常,高级同步对象,带反射的高级调试支持.
使用C++,您更有可能出现内存损坏和"不可能"的竞争条件.而且你需要编写更多的低级线程原语,或者依赖不属于标准化语言的库(如boost).