Используя такие системы, как Parallel Linq, можно разделить выполнение анонимных функций, запросов и т.д. через несколько ядер и потоков в одном машина. Я хотел бы расширить это, чтобы работать на нескольких машинах, используя стандартные языковые конструкции, такие как для циклов (например, Parallel.For()
), типы значений, такие как int
s, struct
s и т.д., И сохранить источник приложения изменения до минимума. В идеале это позволило бы мне открыть проект, добавить атрибут метода и перекомпилировать, чтобы получить доступ к расширенным функциям.
Кажется, что мне нужно что-то вроде:
-
Возможность захватить скомпилированный блок кода (например, лямбда) и передать его рабочему процессу, запущенному на другом node, вместе с любыми требуемыми данными или
-
Предоставьте препроцессор, который будет захватывать данный код, скомпилируйте его в виде проекта шаблона, который заменит ссылки на переменные и т.д. ссылками на класс, который будет обрабатывать сетевую связь, кэширование и доступ к любому другому требуемые активы и отправить полученную DLL всем доступным рабочим узлам, работающим на других машинах.
Roslyn, как представляется, предоставляет некоторые инструменты, которые были бы полезны здесь. Есть ли способ подключиться к текущему конвейеру компиляции, чтобы это разрешить?
Edit
Хорошо, я знаю, это возможно, потому что эти ребята сделали это. Вопрос в том, как?