Описание тега mailboxprocessor

Класс MailboxProcessor в F# - это, по сути, выделенная очередь сообщений, работающая в собственном потоке. Любой поток может отправлять MailboxProcessor сообщение асинхронно или синхронно, позволяя потокам взаимодействовать друг с другом посредством передачи сообщений. Этот стиль параллелизма передачи сообщений вдохновлен языком программирования Erlang.
1 ответ

Вернуть результаты вызывающей стороне с дросселирующей очередью

Опираясь на фрагмент и ответ, можно ли будет возвращать результаты вызывающей стороне из очереди регулирования? Я пытался PostAndAsyncReply, чтобы получить ответ на канале, но он выдает ошибку, если я передаю его с помощью Enqueue. Вот код Цените ос…
02 апр '18 в 15:18
3 ответа

Оптимизация производительности агентов F# Akka.NET при синхронизации

Я пытаюсь решить следующую проблему. У меня есть некоторые агенты, работающие в режиме реального времени, с большим пульсом в пару миллисекунд, и порядок операций, которые они обрабатывают по этой причине, в основном детерминирован (поскольку обрабо…
0 ответов

MailboxProcessor и взаимодействие с GUI Thread

Я создал агент, взаимодействующий с GUI с помощью SynchronizationContext: type AsyncWorker(id:int) = let someEvent = new Event<int * string>() let errorEvent = new Event<_>() let syncContext = SynchronizationContext.Current let f (inbox:…
10 мар '14 в 09:51
1 ответ

Как использовать Async.Parallel в асинхронном рабочем процессе?

Я пытался узнать, как использовать асинхронные методы, основанные на сообщениях. Ниже приведена упрощенная версия того, что я пытался сделать. Я пытаюсь использовать конечный автомат в MailboxProcessor внутри объекта. В целом кажется, что логика мож…
15 янв '14 в 16:48
1 ответ

Модульное тестирование агента

Я пытаюсь проверить MailboxProcessor в F#. Я хочу проверить, что функция f, которую я даю, фактически выполняется при публикации сообщения. Оригинальный код использует Xunit, но я сделал для него fsx, который я могу выполнить с помощью fsharpi. Пока…
15 янв '17 в 15:46
0 ответов

Стоит ли оборачивать TcpClient WriteAsync и ReadAsync в MailboxProcessor?

Резюме вопросов: Разве Stream.WriteAsync и Stream.ReadAsync не блокируют друг друга и могут работать параллельно на двух ядрах процессора? Есть ли способ уведомить, ждать, пока внешний источник уведомит в async{}? Что влияет на производительность Ma…
30 янв '16 в 23:44
1 ответ

MailboxProcessor сериализация данных?

По сравнению с NServiceBus, MSMQ и др. Архитектурами, основанными на сообщениях... Есть ли способ "восстановить резервную копию" состояния процессора почтовых ящиков F#? Или лучшие практики для расширения MailboxProcessor для включения сериализации …
14 янв '13 в 16:09
1 ответ

F# / MailBoxProcessor не отвечает на PostAndReply под нагрузкой почти 100%

У меня есть MailBoxProcessor, который делает следующие вещи: Основной цикл (type AsyncRunner: https://github.com/kkkmail/ClmFSharp/blob/master/Clm/ContGen/AsyncRun.fs#L257 - номер строки может измениться, так как я продолжаю обновлять код). Он генер…
1 ответ

Async и CancellationTokens/CancellationTokenSource - проблема с памятью

Я все еще в поиске утечки памяти, и я заметил следующее: У меня есть много живых экземпляров System.Threading.CancellationCallbackInfo-Objects, поступающих из default-CancellationTokenSource от F# (Async-Workflows). Проблема усугубляется, если вы са…
2 ответа

Утечки памяти в Microsoft.FSharp.Control.Mailbox?

Я сейчас нахожусь в поиске утечек памяти в длинном сервисе (использующем F#). Единственная "странная" вещь, которую я видел до сих пор, - это следующее: Я использую MailboxProcessor в подсистеме с алгебраическим типом данных с именем QueueChannelCom…
20 фев '12 в 06:02
1 ответ

MailboxProcessor.Dispose не делает объект GC коллекционным

Я застрял с исправлением моих тестов TFS, запускаемых для проекта F#, который использует MailboxProcessor. Проблема заключается в следующем предупреждении, которое я получаю от тестировщика TFS: System.AppDomainUnloadedException: попытка получить до…
2 ответа

Использовать Post или PostAndAsyncReply с F# для MailboxProcessor?

Я видел разные фрагменты, демонстрирующие Put сообщение, которое возвращается unit с F# MailboxProcessor, В некоторых только Post метод используется в то время как другие используют PostAndAsyncReplyс ответным каналом, немедленно отвечающим после об…
15 дек '11 в 17:25
2 ответа

Сбой MailboxProcessor во время финализации

Этот код работает на Mono (5.4.1.7). Я использую Агенты F# для обработки большого количества данных в моем веб-приложении, и одно из этих сообщений - Завершение работы. Когда обработанное сообщение о завершении работы обрабатывается, агент очищает н…
25 фев '18 в 17:08
1 ответ

Async.TryCancelled не работает с Async.RunSynchronously

Я пытаюсь создать агент, который обновляет пользовательский интерфейс на основе взаимодействия с пользователем. Если пользователь нажимает на кнопку, графический интерфейс должен быть обновлен. Подготовка модели занимает много времени, поэтому желат…
07 мар '12 в 12:12
1 ответ

Правильный способ подготовки данных в асинхронном отменяемом рабочем процессе с отзывчивым пользовательским интерфейсом

Этот вопрос основан на том, что Async.TryCancelled не работает с Async.RunSynchronously, что выглядит сложно, поэтому я остановлюсь на простой части, которую я пытаюсь решить. Предположим, у меня есть эти функции: let prepareModel () = async { // th…
1 ответ

Ленивый.. но нетерпеливый загрузчик данных в F#

Кто-нибудь знает о "уровне техники" в отношении следующего предмета: У меня есть данные, которые требуют приличного времени для загрузки. они являются историческим уровнем для различных акций. Я хотел бы предварительно загрузить их, чтобы избежать з…
1 ответ

Передача сообщений между удаленными MailboxProcessors?

Я использую MailboxProcessor классы для того, чтобы держать отдельных агентов, которые делают свое дело. Обычно агенты могут общаться друг с другом в одном и том же процессе, но я хочу, чтобы агенты общались друг с другом, когда они находятся в разн…
31 янв '11 в 14:45
1 ответ

Почему удаление ресурсов задерживается при использовании привязки "use" в выражении асинхронного вычисления?

У меня есть агент, которого я настроил для работы с базами данных в фоновом режиме. Реализация выглядит примерно так: let myAgent = MailboxProcessor<AgentData>.Start(fun inbox -> let rec loop = async { let! data = inbox.Receive() use conn =…
26 мар '14 в 21:01
1 ответ

Отмененная задача не возвращает управление асинхронному блоку

Я пытался свести это к как можно меньшему повторению, но это все еще немного, мои извинения. У меня есть проект F#, который ссылается на проект C# с кодом, подобным следующему. public static class CSharpClass { public static async Task AsyncMethod(C…
1 ответ

Что означает использование в неоднородном экземпляре?

Я не могу скомпилировать следующий код: open Genotype open Genome type IAgent = abstract member CrossoverA: Genome<'T> -> unit type internal AgentMessage<'T> = | GetEnergy of AsyncReplyChannel<int> | CrossoverMessage of Genome&l…
17 дек '13 в 16:45