繁体   English   中英

F# 的共享独占锁实现

[英]Shared-Exclusive lock implementation for F#

我目前正在研究一个包含许多并行计算的 F# 项目。 由于绑定到 trimmed.Net 4 Silverlight 框架(由于所需的 Silverlight 兼容性),我无法使用可用的.Net 实现,只能使用 Monitor object 和简单的锁定关键字。

您是否知道 F# 的共享独占锁实现可能是最佳设计?

我以前做过一些函数式编程,但还没有专注于做那些并行的事情(还)。

我不太确定您到底需要什么 - 如果您需要标准互斥,那么 F# 运行时的 Silverlight 版本中提供了lock function。

如果您需要更复杂的东西(例如多个读取器,单个写入器),那么您可以重写代码以使用 F# 代理并更优雅地解决问题。 如果您可以添加有关代码更高级别结构的更多详细信息,那么有人可以发布如何解决您的特定问题的示例。

无论如何,以下 SO 答案显示了如何为多个阅读器/单个作者编写可重用代理:

正如评论中提到的,您可能应该尽量避免显式地编写锁和低级同步原语,因为这是无数错误的来源。 F# 代理为您提供更易于使用的更高级别的抽象。

Expert F# 2.0,第 13 章反应式、异步和并行编程中有一个很好的章节。

参见示例 13.13 显示了一个不错的请求门,类似的东西可能有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM