===Gemini、Copilot 都说有线程安全问题我说没有===

190 天前
 FreeWong

以下 c#代码,不懂 c# 我也加了注释 我说以下代码并没有线程安全问题,但是我问了 Gemini 、Copilot 他们都说有问题

namespace helloworld
{
    internal class Program
    {
        static void Main()
        {
            int foo =0;
            //新建一个线程
            var t = new Thread(() => 
            {
                foo++;
            } );
            t.Start(); //启动上面这个线程
            t.Join();  //主线程阻塞直到 t 线程完成
            Console.WriteLine(foo);
        }
    }

}

1020 次点击
所在节点    编程
3 条回复
abelai
190 天前
建议直接问 foo++ 是否会有线程安全问题
FreeWong
189 天前
@abelai foo++ 不是线程安全的。
xuanbg
168 天前
在另一个线程操作主线程的变量还能线程安全?也就是你这段代码特殊罢了,但凡后面再加一行 foo = 1 ,你都不知道结果是个啥。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1115740

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX