Я работаю над внешним DSL в F #.Язык должен разрешать параллельные циклы:
start 5 times
operation
Это запускается operation
асинхронно 5 раз и продолжается с выполнением.Однако все немного сложнее, потому что operation
использует небезопасную библиотеку (избежать этого нельзя), поэтому я предполагаю, что каждая итерация должна быть запущена в отдельном процессе.
Предполагается, что это единственный способвокруг проблемы небезопасности потока, Как я могу запустить процесс и передать поддерево выполнения (разобщенное объединение в этой точке), которое должно быть выполнено?
Я думаю, WCF именованные каналы, но хотел бы услышатьесли есть альтернативы (WCF означает запуск процесса, ожидание обратного вызова (отслеживание его) и возвращение поддерева - не очень дружественного к функциям кода, но, возможно, я ошибаюсь).
Кроме того,производительность в данном случае не очень важна.
РЕДАКТИРОВАТЬ: Оказывается, мне не нужно никаких сообщений после запуска процесса.Я испытываю желание просто передать строку выражения в качестве параметра запуска процесса и позволить ему проанализировать / выполнить ее.Я по-прежнему интересуюсь альтернативами, но, полагаю, проще не будет.