C # Эффективность многопоточности

2020-08-01 c# .net multithreading thread-safety

Если я хочу, чтобы несколько потоков выполняли разные методы, я знаю, что это нормально, потому что один и тот же код не будет выполняться одновременно (??), т.е. мне не потребуется блокировка методов (??). Если мне нужно, чтобы несколько потоков выполняли методы, которые в конечном итоге сходятся в одном и том же коде, я могу заблокировать этот блок кода без слишком большой потери производительности.

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

например:

for (int count = 0; count < 100; count++)
{
    doMethod(count);
}

public void doMethod(int count)
{
    // Some process that could take many seconds to execute.
    // Calling values from elsewhere, primitives and reference.
    // Setting locals, class members and properties in parameter reference types.
    // Constructing new objects and adding to member lists and in parameter reference types.
}

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

Answers

Related