我只是想确认一下我对多线程的理解:
答案 0 :(得分:2)
堆上存在引用类型。虽然您在物理上能够在线程之间共享它们,但它们可能会或可能不会被设计为从不同的线程中使用。
堆栈上可能存在也可能不存在值类型。您在物理上能够在线程之间共享值类型,但禁止unsafe
代码(可以,但几乎可以肯定不应该,创建指向堆栈上的值类型的指针,将它暴露给另一个线程以取消引用),你能够这样做的唯一方法是对堆上而不是堆栈的那些值类型。与引用类型一样,它们可能设计也可能不设计,以便在从多个线程访问时正常工作。
答案 1 :(得分:1)
不完全确定,您要尝试的是什么,但值类型和引用类型根本没有与线程相关联。
然而,堆栈是。
基本上你所写的是真的。
当你在某种方法中创建一个值类型时,他的生命周期只在你声明的块中。所以没有任何其他线程可以访问它(实际上没有办法尝试这样做C#代码)。
当您使用值类型作为引用类型的成员时,实际只是使此引用类型的大小更大,并且此值类型永远不会在堆栈上结束,它总是在堆中结束,因此您可以使用它来自不同的主题。
你问题的第一点显然是正确的
另外:请记住,每个帖子都有不同的堆栈