我主要是一名Java开发人员,我一直在阅读有关线程和并发性的大量深入研究.许多非常聪明的人(Doug Lea,Brian Goetz等)撰写了有关这些主题的书籍,并为Java的新并发库做出了贡献.
当我开始更多地了解Python,Ruby和其他语言时,我想知道:是否必须为这些语言重新创建所有这些工作?
是否存在或者是否需要一个"Python的Doug Lea"或"Ruby的Goet Goetz",他们对这些语言的并发功能做出了类似的强大贡献?
是否必须为将来的语言重新创建所有用Java完成的并发工作? 或者,用Java完成的工作是否会为未来的语言建立课程和指导?
并发编程的基本原则存在于java之前,并在您正在讨论的那些Java书籍中进行了总结.java.util.concurrent库类似地源自以前的代码和关于并发编程的研究论文.
但是,某些实现问题是Java特有的.它具有指定的内存模型,Java中的并发实用程序是根据其具体情况量身定制的.通过一些修改,可以将它们移植到具有不同存储器模型特征的其他语言/环境.
因此,您可能需要一本书来教您在其他语言中使用并发工具的规范用法,但它不会重新发明轮子.
请记住,线程只是处理"并发"的几种可能模型之一.例如,Python在Twisted中拥有最先进的异步(基于事件)非线程模型之一.非阻塞模型非常强大,并且在大多数最高扩展应用程序中用作线程的替代(例如,nginx,lighttpd).
您对其他流行语言需要线程的假设可能仅仅是以Java为中心(因此以线程为中心)的世界视图的症状.请查看C10K页面,了解如何处理大量并发请求的几个模型的略微过时但信息量大的内容.