Запускать параллельные задачи в 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
И проголосовавший ответ на этот вопрос тоже может быть полезным
В чем разница между асинхронным программированием и многопоточностью?