Запускать параллельные задачи в C#

Я разрабатываю программное обеспечение, которое мне нужно для параллельных задач. Например вот мой task1:

Task t1 = new Task(()=>
        {
            //Do Some Codes
        }
        );

И у меня есть больше задач, которые имеют тот же код, что и task1:

Task t2 = new Task(()=>
        {
            //Do task1 codes
        }
        );
Task t3 = new Task(()=>
            {
                //Do task1 codes
            }
            );
t1.start();
t2.start();
t3.start();

У меня также есть таймер, чтобы я мог проверить, работают ли эти задачи, и выполнять процессы быстрее. Но это не изменится, и у них будет одно и то же время.

Теперь я хочу знать, как я могу выполнять параллельные задачи и дать мне более быстрый результат.

Любая помощь будет оценена

2 ответа

Предположим, у вас есть две функции и вы хотите выполнять их параллельно. Я думаю, что есть два способа сделать это:

1. Использование параллельной библиотеки задач

private void Function1()
{
    //do work
}

private void Function2()
{
    //do work
}

private void RunParallel()
{
    Parallel.Invoke(Function1, Function2);
}

2: Запуск каждой функции в отдельных потоках

private void Function1()
{
    //do work
}

private void Function2()
{
    //do work
}

private void RunParallel()
{
    ThreadStart ts1 = new ThreadStart(Function1);
    ThreadStart ts2 = new ThreadStart(Function2);

    Thread t1 = new Thread(ts1);
    Thread t2 = new Thread(ts2);

    t1.Start();
    t2.Start();
}

Вы можете попробовать использовать "Несколько потоков" для вызова ваших методов или вызова асинхронных методов. Это должно помочь.

Для получения дополнительной информации:

https://docs.microsoft.com/en-us/dotnet/csharp/async

И проголосовавший ответ на этот вопрос тоже может быть полезным

В чем разница между асинхронным программированием и многопоточностью?

Другие вопросы по тегам