您可以观察history count
ref 的 ,这将表明存在争用:
user=> (def my-ref (ref 0 :min-history 1))
#'user/my-ref
user=> (ref-history-count my-ref)
0
user=> (dosync (alter my-ref inc))
1
user=> (ref-history-count my-ref)
1
Run Code Online (Sandbox Code Playgroud)
历史计数并不直接代表争用。相反,它表示为了服务并发读取而维护的过去值的数量。
历史记录的大小受min
和max
值的限制。默认情况下,它们分别是0
和10
,但您可以在创建时更改它们ref
(见上文)。由于默认min-history
情况下0
,您通常不会看到ref-history-count
返回非零值,除非引用存在争用。
在此处查看更多讨论history count
:https://groups.google.com/forum/?fromgroups #!topic/clojure/n_MKCoa870o
我认为目前没有任何方法clojure.core
可以观察STM交易的速率。你当然可以做一些类似于 @Chouser 在他的历史压力测试中所做的事情:
(dosync
(swap! try-count inc)
...)
Run Code Online (Sandbox Code Playgroud)
即在事务内增加一个计数器。每次尝试交易时都会发生增量。如果try-count
大于1
,则重试事务。
归档时间: |
|
查看次数: |
239 次 |
最近记录: |