Programming languages 并行计算的示例问题

Programming languages 并行计算的示例问题,programming-languages,concurrency,paradigms,Programming Languages,Concurrency,Paradigms,现在有很多并发编程的范例和方法在使用。软件事务内存、参与者、共享状态并发、元组空间等等 然而,我发现缺少的是一个有趣的并发测试问题库。一个著名的例子是“哲学家进餐问题”,它既不够复杂,也没有激励作用,也不现实。还有许多并行算法(矩阵乘法、渲染、一般嵌套数据并行)只需要分配工作,但执行线程之间没有真正的通信并发性 那么,有人能给我指出一些有趣的问题集吗?这些问题集需要在交互环境(甚至可能是分布式环境)中实现真正的并发,这些问题足够简单,可以用作并发范例的示例?理想情况下,我希望找到一组问题作为并发

现在有很多并发编程的范例和方法在使用。软件事务内存、参与者、共享状态并发、元组空间等等

然而,我发现缺少的是一个有趣的并发测试问题库。一个著名的例子是“哲学家进餐问题”,它既不够复杂,也没有激励作用,也不现实。还有许多并行算法(矩阵乘法、渲染、一般嵌套数据并行)只需要分配工作,但执行线程之间没有真正的通信并发性

那么,有人能给我指出一些有趣的问题集吗?这些问题集需要在交互环境(甚至可能是分布式环境)中实现真正的并发,这些问题足够简单,可以用作并发范例的示例?理想情况下,我希望找到一组问题作为并发范式的“lackmus测试”(或者强调它们的差异,因为每种范式都有其优缺点)


非常感谢您的帮助:)

我以前考虑过这个问题,我自己也曾提出过一些并发编程范例:p

我当时得出的结论是,这样一个测试集似乎并不以独立于语言的方式存在。虽然它的存在可能会有帮助,但似乎有一些相当好的理由(据我所知)它不存在

并发编程中的大多数关注点倾向于数据并行性,因此相同的操作并行应用于同一数据集的不同部分。我认为你所说的任务级并行(即并行执行的不同任务,可能共享数据)实际上做得不多。我想这是因为它有点难。但我认为这也有点困难,因为大多数问题并不适合这种并发性。用并发原语描述分布式系统可能会有所帮助,但这些系统往往是解耦的,因此有一个协议(书面的或隐含的)来调节它们的通信。人们往往不认为这些类型的系统是明显的“并发”编程情况,即使在正确的框架内查看它们(即,将“客户端”和“服务器”视为在某些点上与同步并行运行的代理)


我认为你能找到灵感来源的地方只有在个人实现中。Erlang、Occam(和Occam pi)、Alice、CML、Concurrent Haskell等都可能有小的测试小体,但问题和它们的实现都倾向于在特定语言中实现(因为它们显然可以在该语言中实现!)。也许您还可以查看正在工作的社区,以及各种各样的系统,如pi演算、CCS和CSP,以了解他们正在使用哪些类型的系统作为示例模型。描述并发通信系统的标准语言不可知问题集的想法很吸引人,但我认为在这一点上有些难以捉摸

另外,如果您对尝试编译这样一个测试问题语料库感兴趣,请告诉我。我可能有兴趣帮忙。我的个人资料中链接了网站上的联系方式。