Ocaml获取互斥锁的列表

时间:2015-05-07 04:13:29

标签: oop dictionary locking ocaml mutex

所以我正在做的是尝试生成一个名为transact的函数。当给出一个锁列表[x1; x2; ...; xn],一个函数(f:' a->' b)和一个参数(v:' a) ,running(fv)访问受lock [x1; x2; ...; xn]保护的任何数据,它应该获取锁,在参数上运行函数,并释放锁而不会导致死锁。

我知道如何获得单个互斥锁,如下面的示例简单函数,但我不确定如何查看它们的列表。

method deposit(int amt):unit = 
    Mutex.lock mylock ; 
    if balance + amt < max_balance then
        balance <- balance + amt ; 
    Mutex.unlock mylock
end

我是否想使用List.iter函数来完成锁定或映射以应用函数?我正在使用Core.Std库。

1 个答案:

答案 0 :(得分:0)

从你的示例代码我想说你想使用List.iter; (显然)Mutex.lock没有有趣的结果。

避免死锁的经典方法是对锁定执行订单,并始终根据此顺序应用Mutex.lock