- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
This commentary page描述了STM
的很多细节在 GHC 中,但我想澄清几点。
第一 , 当父级中访问的变量发生变化时,嵌套事务是否失效?
例如,我们在线程 A
中有:
takeTMVar a `orElse` takeTMVar b `orElse` takeTMVar c
A
正在执行嵌套事务
takeTMVar b
, 另一个线程
B
做
putTMVar a ()
;可以线程
A
成功完成其嵌套事务,还是无效(这会让我觉得是错误的)?
A
的整个顶级交易的情况下重试并最终阻止,
A
是否正确?当
a
中的任何一个时都会被唤醒,
b
, 或
c
改变?
orElse
,请更改上述事务的语义至
infixr
?
最佳答案
我不认为“嵌套”是描述这一点的正确术语。这是三个备用交易; none 嵌套在另一个中。特别是,这三个中的一个将要发生并被提交——但哪个发生是不确定的。这一句话应该足以回答所有三个问题,但为了确定,让我们仔细说一下:
takeTMVar b
将完成并提交;或者它可能会被抢占和takeTMVar a
将被唤醒并完成。但他们不会都完成,这是肯定的。 TMVar
s 可以唤醒这个线程。 orElse
函数遵循有用的法则:它是结合的并且具有单位 retry
。”。)A
正在执行 takeTMVar b
(但尚未提交)和线程 B
执行并提交写入 a
,之后没有其他事情发生,您可以确定线程 A
将重新启动并从 a
返回新写入的值. “之后没有其他事情发生”部分很重要:语义对发生的事情做出了 promise ,而不是关于实现如何实现它;因此,如果说,另一个线程来自 a
立即(这样 takeTMvar a
仍然会去 retry
),一个足够聪明的实现被允许注意到这一点,而不是重新启动线程 A
从交易开始。 关于haskell - 与 orElse 嵌套的 STM 事务中的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193484/
是 orElse 的“其他”部分吗?当由于另一个事务写入 TVar 而重试事务时调用它已阅读,或仅当 retry 被显式调用? 最佳答案 如果你有 orElse a b 然后 b仅在 retry 时运
我正在尝试学习Java 8 功能可选。我对Optional.orElse的工作原理感到困惑。这是我尝试过的: public class OptionalsExample { public st
当在 map 步骤之一中得到空列表时,如何调用 orElse? MyObj myObj = new MyObj(); myObj.setAaa("aaa"); myObj.setBbb("bbb");
让我们定义一个 PartialFunction[String, String]和一个 PartialFunction[Any, String] 现在,给定 orElse 的定义 def orElse[
是使用PartialFunction的 orElse或多或少比使用大 match 更有效期间阻止 apply时间? 为了说明这个问题,是: val pf = { case "a" => "A"} or
使用 Either 的惯用方式是什么?在斯卡拉?例如当使用 Option我可以使用 orElse如果当前是 None,则获取下一个可选值的方法.但是如何使用 Either以同样的方式?我没有找到像 o
or 和 OrElse 有什么区别? if temp is dbnull.value or temp = 0 产生错误: Operator '=' is not defined for type 'D
有时我想返回包含在选项中的对象的属性值,但我无法使用 getValue.orElse(otherValue) 轻松做到这一点。 例如,我正在映射内联属性,并且我想使用像 object.get.prop
我很好奇为什么可以这样做(至少在 Java 8 上): Optional.of(null).orElse("something"); Optional.of(null) 基本上是一个有保证的空指针。允
大家好,使用 gzip 的工作人员,我遇到了一个问题。我有一个 GzipWrapper 并且有很多 if else,是否可以使用Optional.orElse 做类似的事情?通过简单的可选示例,我将其
我在使用Optional和匿名类时遇到了一个奇怪的问题: public class Foo { interface Bar { } void doesNotCompile()
是否可以写一个概括的orElse方法来自 Option这需要可变数量的参数?也就是说,而不是: lazy val o1 = { println("foo"); None } lazy val o2 =
我有以下代码打击。我试图找到一种方法来避免 if (something.isPresent())行并声明 Optional something以及。相反,我想链接 Optional.orElse()方
我需要一些关于以下代码片段的帮助。如果raiseWorkQueueTask可以找到任何null != previousPeriod.getOldId()和,则它应该返回通知riseWorkQueue
我正在寻找在 null 情况下提供默认值的良好语法。在涉及 API 的 Java 中,我习惯于使用 Optional 而不是 null,并且想知道 C# 更好的可空类型是否有等效的类型? 可选项 Op
这个问题在这里已经有了答案: Difference between `Optional.orElse()` and `Optional.orElseGet()` (9 个回答) When I nee
我正在尝试在 orElse 中使用 Stream 并且难以理解错误。 collectorConfiguration = Optional.ofNullable(recapPlacement.getAt
我正在使用流过滤器 findAny.orElse,但它没有像我预期的那样工作,所以我想我不了解它的真正工作原理。这是我的代码 return Stream.of(getObjectAttributeVa
在下面的代码中,我试图理解 java-8 中提供的 Optional 的概念。我创建了以下示例来掌握 orElse() 背后的原理。执行代码后,执行了defaultMethod()的主体,并返回 ne
我正在使用此逻辑并尝试在未找到员工时返回 new Employee()。 但是,当 request.getId() 为 null 时,它会抛出异常,我正在等待它执行 orElse() 部分.然而,事实
我是一名优秀的程序员,十分优秀!