如何解决F#的共享排他锁实现
| 我目前正在从事包含许多并行计算的F#项目。由于绑定到修剪过的.Net 4 Silverlight框架(由于必需的Silverlight兼容性),因此我无法使用可用的.Net含义,只能使用Monitor对象并通过使用锁定关键字进行简单锁定。 您是否知道如何最好地实现F#的Shared-Exclusive锁实现? 我之前做了一些函数式编程,但还没有专心做并行事情(还)。解决方法
我不太确定您到底需要什么-如果需要标准互斥,则F0运行时的Silverlight版本中提供了
lock
函数。
如果您需要更复杂的东西(例如多个读取器,单个写入器),则可以重写代码以使用F#代理,从而更优雅地解决问题。如果您可以添加有关代码高级结构的更多详细信息,那么有人可以发布示例来解决您的特定问题。
无论如何,以下SO答案显示了如何为多个读取器/单个写入器编写可重用的代理程序:
在F#中实现CCR交错仲裁器
如评论中所述,您可能应该尝试避免显式地编写锁和低级同步原语,因为这是无数个错误的来源。 F#代理为您提供了更易于使用的更高层次的抽象。
, 在Expert F#2.0的第13章,响应式,异步和并行编程中有一章非常出色。
请参见示例13.13,该示例显示了一个不错的请求门,可能会使用类似的东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。