Допустим, у меня есть обычное настольное приложение, которое предназначено для работы на одной машине, например, приложение для редактирования видео. Такие приложения часто порождают фоновые потоки, требующие больших вычислительных ресурсов, например, рендеринг видео.
Мне было интересно, возможно ли технически «перенести» эти тяжелые потоки вычислений на более мощную машину и сделать это так, чтобы это было незаметно для пользователя. Машина пользователя будет запускать только поток пользовательского интерфейса, в то время как остальная тяжелая работа будет выполняться на более мощной удаленной машине. Предположим, что данные, необходимые потоку для выполнения вычислений (в нашем примере — видеофайлы), доступны на диске удаленной машины.
Я понимаю, что не так-то просто заставить два потока на двух совершенно разных процессорах общаться друг с другом так, как будто они работают на одной машине, но мне было интересно, в чем дело.фундаментальное ограничениевот, и есть ли какие-либо известные решения для этого варианта использования.
решение1
«Обычное» настольное приложение, предназначенное для работы на одной машине, не сможет разделить свои потоки таким образом.
Для этого потребуется специально созданное приложение с запрограммированным межкомпьютерным интерфейсом, например, приложение удаленного рабочего стола.
В общем случае, без выделенного высокоскоростного соединения между двумя компьютерами, задержка, связанная с соединением, сделает экран непригодным для слишком динамичных видеоприложений.
решение2
Это во многом зависит от поставленной задачи, а также от того, как именно вы определяете бесшовность.
Для определенных типов нагрузок это уже происходит. Фактически, задача видеомонтажа, которую вы определяете, может делать именно это в некоторых случаях - термин "ферма рендеринга".
В более общем плане эту проблему решают многие типы «облачных вычислений».
(Проблема с этим ответом заключается в том, как вы определяете бесшовность. Конечно, существуют архитектуры, в основном программные, которые могут контролировать и делать такие операции бесшовными. Но для них требуются умеренно сложные и зависящие от задач настройки. Не все задачи поддаются этой модели. Особенно там, где пропускная способность может быть проблемой или где задачи невозможно распараллелить.)