线程池局部变量的概念

本文关键字:局部变量 线程 | 更新日期: 2023-09-27 18:09:36

我正在尝试在c#中使用ThreadPool多线程我的应用程序。我有一个3D数组,我必须分别处理每一行。我已经生成了与系统中处理器(内核)数量相等的线程,然后在线程之间划分任务,以便在单独的行上处理。

在我使用该线程的所有线程中调用一个函数,以便在不同的线程之间划分数据。(有点类似SIMD)。该函数还调用其他小函数。这些函数还创建动态分配的数组作为中间值的临时存储空间。我想知道线程中局部变量的概念是什么。在多个线程中调用单个函数是否会在各个线程中复制变量?我如何着手设计这样的代码?

请解释. .

线程池局部变量的概念

在多个线程中调用单个函数是否会在各个线程中复制变量?

它并不是在局部复制变量。每个局部变量/线程对都是一个特定的存储位置,并且该存储位置与任何其他局部变量/线程对都不相同。

我已经生成了等于系统中没有处理器(内核)的线程,然后在线程之间分配任务,以处理单独的行。

你为什么要自己做这件事?使用TPL

我认为您应该重新考虑解决方案并尝试使用Parallel。对于你的解决方案。

MSDN平行。

但是为了回答你的问题,你可以在多个线程中使用一个函数,如果它被设计成线程安全的。你可以在函数中使用局部变量,因为它们是函数的局部变量,每次调用都会获得一个单独的内存位置。