Концепции локальных переменных Threadpool - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь создать многопоточное приложение, используя ThreadPool в c #.У меня есть 3D-массив, в котором я должен обрабатывать каждую строку отдельно.Я создал потоки, равные количеству процессоров (ядер) в системе, а затем разделил задачу между потоками для обработки в отдельных строках.

Для всех потоков, в которых я использую поток, вызывается одна функция для разделения данных между различными потоками.(Вид SIMD вещь).Функция вызывает и другие мелкие функции.Также функции создают динамически размещаемые массивы в качестве временного пространства для хранения промежуточных значений.Я хочу знать, какова концепция локальных переменных в потоках.Создает ли вызов одной функции в нескольких потоках локальные копии переменных в отдельных потоках?Как мне разработать такой код?

Пожалуйста, объясните ..

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Делает ли вызов одной функции в нескольких потоках локальные копии переменных в отдельных потоках ??

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

Я породил потоки, равные числу процессоров (ядер) в системе, а затем разделить задачу между потоками для обработки на отдельные строки.

Почему вы делаете это самостоятельно?Используйте TPL .

0 голосов
/ 23 сентября 2011

Я думаю, вам следует переосмыслить решение и попытаться использовать Parallel.For для своего решения.

MSDN Parallel.For

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

...