CPU架构格局发生了变化,多核将改变我们开发软件的方式。我用C、C++和Java进行了多线程开发,并使用各种IPC机制进行了多进程开发。对于开发人员来说,使用线程的传统方法似乎不容易使用支持高度并发性的硬件。
您知道哪些语言、库和开发技术有助于缓解创建并发应用程序的传统挑战?很明显我在考虑死锁和种族状况之类的问题。设计技术、库、工具等也很有趣,它们有助于实际利用和确保可用资源得到利用--仅仅编写一个安全、健壮的线程应用程序并不能确保它使用所有可用的核心。
到目前为止我看到的是:
你还知道些什么,什么对你有用,你认为什么是有趣的?
发布于 2008-09-24 15:18:36
我建议两个范式的转变:
软件事务存储器
您可能想看看软件事务内存(STM)的概念。其思想是使用乐观并发:任何与其他操作并行运行的操作都试图在一个独立事务中完成其任务;如果某个时候提交了另一个事务,该事务正在运行的数据无效,则事务的工作将被丢弃,事务将再次运行。
我认为这个想法的第一个广为人知的实现(如果不是概念的证明和第一个)是Haskell:Haskell中有关事务性内存的论文和演示中的实现。维基百科的STM文章上列出了许多其他实现。
事件循环和承诺
另一种非常不同的并发处理方法是在E编程语言(语文(%29))中实现的。
请注意,它处理并发性的方法以及语言设计的其他部分,在很大程度上基于Actor模型。
发布于 2008-09-23 15:25:26
您提到了Java,但您只提到线程。您看过Java的并发库吗?它与Java 5及更高版本捆绑在一起。
它是一个非常好的库,包含ThreadPools、CopyOnWriteCollections等等。查看Java教程上的文档。或者你愿意的话,Java文档。
发布于 2008-10-18 22:37:04
一些基于Scala的东西:
https://stackoverflow.com/questions/121674
复制相似问题