问题标签 [stm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
224 浏览

stm - 在 JAVA 中使用 STM 实现 pi 演算

我想在 JAVA 中实现 `pi-calculus。对于并发,我使用Deuce STM library。更改 JAVA 语法会很困难,因此我计划使用带注释的变量和通用函数/类。

例如。

所以一个通道将是这个类的一个实例。

我对如何对流程进行建模以允许它们通过这些渠道进行交互感到困惑。

有什么帮助/建议吗?

谢谢你。

0 投票
1 回答
719 浏览

haskell - “餐饮哲学家”的以下解决方案有什么问题?

为了熟悉 Haskell 中的 STM,我写了以下解决哲学家就餐问题的方法:

当我编译并运行我的解决方案时,似乎不存在明显的并发问题:每个哲学家最终都会吃饭,似乎没有哲学家受到青睐。但是,如果我randomDelay从 、compile 和 run 中删除语句philosopher,我的程序的输出如下所示:

在这种情况下发生了什么?

0 投票
1 回答
947 浏览

performance - Possible improvements in clojure "official" concurrency example (using locks,atoms,stm)

i am trying to get the "official" example of clojure concurrency closer to a java version using manual locking. In this gist i put the java and clojure code and the thread dump of a VisualVm profile of all versions. Here it is the clojure code and timing

Time (in an "old" intel core duo):

NOTE: I dont want get a clojure version as fast as java one, or a stm version as fast as clojure using locks one. I know that is in general difficult and with some problems impossible. I know the use of atoms and stm is more composable,easier to use and less error prone than using manual locks. Those version are only the best possible referents in java and clojure for the problem (well i did my best). My objective is get the atom and stm versions closer to locking ones, or to understand why (maybe in this concrete example) is not possible to speed up those versions.

NOTE: Another comparation, this time with haskell versions using STM and MVars (code in same gist linked):

0 投票
1 回答
368 浏览

concurrency - 为协调写入/读取选择正确的 Clojure 引用类型

我正在为 Campfire 开发一个聊天机器人,它将当前用户列表保存在一个原子中,(defonce users (atom {})).

我最初选择这个引用类型是因为它很简单,到目前为止它运行良好,但可能需要改变。

  1. Campfire 向流式 API发送EnterMessage和事件。LeaveMessage我的机器人通过从 Campfire API 获取当前用户列表来对这些做出反应,然后使用新列表调用reset!atom users

  2. 那些相同的 Enter/Leave 事件会触发随机交互,例如从usersatom 中选择一个随机用户并向其提问。

问题

上面的数字 2 经常询问刚刚离开的用户,或者从不询问刚进入的用户,因为users原子还没有!reset。我想我需要使用 a ref,但这些文档说“作家永远不会阻止通勤者或读者。 ”问题是,我希望那个作家阻止我的读者,对吧?!

0 投票
1 回答
171 浏览

haskell - 功能性 Banana Traveler - 输入处理

这是我的Traveler项目的一个子问题。

我已经将处理输入的粗略代码放在一起。它有效,直到我将 a 引入TChan混合中。下面是工作代码,以及如何使用它的示例。然后,我将对其进行更改并解释我这样做的原因。然后,我会谈谈这个问题。

执行以下操作ghci将证明这是有效的。

所以,现在我已经有了基本的机制,我想开始构建它。这将是一款多人游戏。就输入处理而言,解决此问题的第一步是从TChan. 想法是,所有玩家都将写入 this TChan,并且每个命令将按照到达的顺序进行处理。

所以我添加了一个新函数'inputFrame'

这是我尝试使用它的方式,在ghci.

output.txt不被写入。commandChan正在阅读,因为我检查它是否在填充后变为空。我做错了什么很明显吗?如果没有,我该如何解决问题?另外,出于我的预期目的,这是一个TChan正确的选择吗?

0 投票
2 回答
168 浏览

haskell - haskell 和大二进制

通过 TChan 广播 BinaryString 时,复制了整个 Binary 还是仅复制了引用?


如果整个二进制文件被复制如何只发送参考?

0 投票
1 回答
531 浏览

multithreading - 在 Tchan 上选择性发送?

AFAIK TChan 充当枢纽,发送的每条消息都会被其他人看到,对吧?!
我想要一个 TChan 作为开关来向特定线程发送消息,并且还支持广播。
有这样的事吗?

0 投票
1 回答
786 浏览

java - Java STM:关于 Multiverse STM 的问题

我正在对 JVM 上的 STM 技术进行一些研究。阅读了一些文档后,我对 Multiverse 的实现有点困惑。

根据Multiverse FAQ,Multiverse 不支持检测。然而,在接受其创始人 Peter Veentjer 的采访时,他有以下话要说:

Multiverse 的使命之一是提供一个可以轻松与其他语言集成的 STM 实现,因此实际的 STM 实现只关心接口,因此您可以完全绕过插装。为了使它更容易,我提供了一个不依赖于仪器的托管参考。这是 Jonas Boner 在基于 Scala 的 Akka 项目中使用的方法。

这到底是什么意思?它是否使用字节码检测?

最后,我一直在阅读另一个关于 ScalaSTM 的文档其中清楚地暗示了 Multiverse 使用字节码检测。

因此,我想知道是否有人可以告诉我关于 Multiverse 的实际工作原理。它是类似于 ScalaSTM 的运行时库,还是使用仪器?

0 投票
2 回答
320 浏览

haskell - Haskell STM 分片 TVAR

我是 Haskell 和 STM 的新手,我正在尝试理解基本概念。

一般来说,在 Haskell 和函数式编程中,如果我错了,请纠正我,没有赋值之类的东西。

我不能写x=3;我所能做的就是用xand生成另一个绑定3

现在谈到 TVar 和线程,如果我有多个线程共享同一个 TVar,如果一个线程更改值,使用writeTVar,其他线程将看到更改的值,对吗?

所以如果我有 2 个线程共享同一个TVar Intvar,第一个线程加 1,如果成功,第二个线程会看到更新的值吗?

塔克斯

0 投票
1 回答
280 浏览

c - 是否有类似 Clojure 的 C STM 库

是否有任何库将refs、atoms 和agents 带入 C 代码?

是否还有结构共享库供 C 伴随?