Выполнение смешанных задач параллельноC#

Место общения программистов C#
Ответить
Anonymous
 Выполнение смешанных задач параллельно

Сообщение Anonymous »

У меня есть ~ 10000 объектов типа System.text.json.jsondocument. Для каждого JSondocument параллельно я должен выполнять следующие шаги в порядке. < /P>
  • Клон JSondocument в jsonNode < /li>
    Применить последовательность задач, преобразующих jsonnode на месте < /li>
    конвертируйте форму jsonnode apensearch < /li> < /> . /> Сохраните конвертированный jsonNode в структуру данных (возможно, одновременный балл) < /li>
    < /ul>
    Теперь, поскольку у меня есть ~ 10000 документов, я хотел бы обработать эти документы параллельно, применяя поток, который я изложено выше. Проблема - шаг 2 потока. Последовательность задач, которые будут применены на втором этапе, имеют разные характеристики: некоторые из них очень маленькие и быстрые, некоторые из них связаны с CPU, а некоторые связаны с IO. Например, STEP2 может иметь следующие вызовы (это всего лишь пример, я использую ActivatorUTILITIONS.CREATEINSTANCE для получения динамических задач во время выполнения). < /P>
    await Task1(doc); // calls an API and updates doc
    await Task2(doc); // make some heavy string manipulations to doc's properties and updates it. This returns a Task.CompletedTask.
    < /code>
    где < /p>
    // Task1.cs
    public class Task1 : ITask
    {
    public async Task RunAsync(JsonNode doc)
    {
    // call an API
    // update doc's properties
    }
    }

    // Task2.cs
    // this also returns Task and can be awaited to make ITask uniform
    public class Task2 : ITask
    {
    public Task RunAsync(JsonNode doc)
    {
    // heavy string/regex manipulations
    // update doc's properties
    return Task.CompletedTask;
    }
    }
    < /code>
    Как я понимаю, у меня есть эти параллельные варианты. В задачах процессора? Я думаю, что он может справиться с одновременным и параллельным выполнением, и, похоже, поддерживает перекрывающиеся выполнения между блоками. Единственные проблемы - это, если это излишнее из того, что я пытаюсь сделать, и я понятия не имею, как реализовать шаг2.
Я думаю об этом правильно?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... n-parallel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»