簡體   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