Использование BlockingCollection <'a> .TryTake в F # - PullRequest
1 голос
/ 13 января 2020

Это связано со старым вопросом:

Как использовать BlockingCollection <'a>. Попробуйте в F #

, где ответ больше или меньше, чем мы Я не могу использовать его, потому что часть byref должна быть в конце списка параметров, чтобы это стало возможным.

8 лет прошло с тех пор, как возник этот вопрос: есть ли подобные очереди блокировки с тайм-аутом, который я могу использовать в F #?

1 Ответ

4 голосов
/ 13 января 2020

Вы можете использовать TryTake из F # без проблем, но вы не можете использовать его как возврат кортежа. Например, в FSI этот код:

open System.Collections.Concurrent

let bc = new BlockingCollection<int>()
let mutable item = 0

bc.Add 42
let success = bc.TryTake(&item, 100)

будет работать нормально и приведет к следующему выводу:

val bc : BlockingCollection<int>
val mutable item : int = 42
val success : bool = true
...