关于局部变量的多线程争议

时间:2011-01-25 15:27:22

标签: multithreading visual-studio-2008 thread-safety

我实现了一些由各个后台线程处理的方法。我理解以这种方式做事的复杂性,但是当我测试结果时,一切看起来都很好。每个线程有时访问相同的变量,并且在任何给定时间最多有5个线程工作,我想我应该使用同步锁,但我的问题是线程是否可以以任何方式执行进程而不覆盖变量内容。我的印象是每个线程都在内存中为该变量分配了一个站点,即使它被命名为相同,在内存中它是一个与特定线程映射的不同位置,对吧?因此,如果存在冲突,您应该收到一个错误,如果它被其他线程使用,则无法访问该变量。

我错了吗?

1 个答案:

答案 0 :(得分:2)

  • 如果你在谈论函数的 local 变量 - 不,每个线程都有自己的堆栈副本。
  • 如果您正在讨论从不同线程访问的类的成员变量 - 是的,您需要保护它们(除非它们是只读的)