首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多核并发语言、图书馆及开发技术

多核并发语言、图书馆及开发技术
EN

Stack Overflow用户
提问于 2008-09-23 15:19:45
回答 15查看 6.1K关注 0票数 35

CPU架构格局发生了变化,多核将改变我们开发软件的方式。我用C、C++和Java进行了多线程开发,并使用各种IPC机制进行了多进程开发。对于开发人员来说,使用线程的传统方法似乎不容易使用支持高度并发性的硬件。

您知道哪些语言、库和开发技术有助于缓解创建并发应用程序的传统挑战?很明显我在考虑死锁和种族状况之类的问题。设计技术、库、工具等也很有趣,它们有助于实际利用和确保可用资源得到利用--仅仅编写一个安全、健壮的线程应用程序并不能确保它使用所有可用的核心。

到目前为止我看到的是:

  • 二郎:基于进程的消息传递IPC,“参与者的并发模型”
  • 剧作家:Ruby的参与者模型库
  • Scala:JVM的函数式编程语言,增加了对并发性的支持
  • 克洛尔:带有参与者库的JVM函数式编程语言
  • 白蚁:Erlang进程方法和消息传递到方案的一个端口

你还知道些什么,什么对你有用,你认为什么是有趣的?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2008-09-24 15:18:36

我建议两个范式的转变:

软件事务存储器

您可能想看看软件事务内存(STM)的概念。其思想是使用乐观并发:任何与其他操作并行运行的操作都试图在一个独立事务中完成其任务;如果某个时候提交了另一个事务,该事务正在运行的数据无效,则事务的工作将被丢弃,事务将再次运行。

我认为这个想法的第一个广为人知的实现(如果不是概念的证明和第一个)是Haskell:Haskell中有关事务性内存的论文和演示中的实现。维基百科的STM文章上列出了许多其他实现。

事件循环和承诺

另一种非常不同的并发处理方法是在E编程语言(语文(%29))中实现的。

请注意,它处理并发性的方法以及语言设计的其他部分,在很大程度上基于Actor模型。

票数 11
EN

Stack Overflow用户

发布于 2008-09-23 15:25:26

您提到了Java,但您只提到线程。您看过Java的并发库吗?它与Java 5及更高版本捆绑在一起。

它是一个非常好的库,包含ThreadPools、CopyOnWriteCollections等等。查看Java教程上的文档。或者你愿意的话,Java文档

票数 9
EN

Stack Overflow用户

发布于 2008-10-18 22:37:04

一些基于Scala的东西:

  • PiLib: Pi-演算风格并发的托管语言
  • 无反转控制的基于事件的编程
  • 将线程和事件统一起来的行动者
  • Scala多播执行者:体系结构与实现
  • 用可扩展模式匹配实现连接
  • 通信Scala对象(修订版)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/121674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档