c# - 这把锁有什么问题?

标签 c# .net multithreading locking

非常好,这把锁有问题,但我不明白那是什么。我非常怀疑下面的例子没有很好地锁定。那么可能是什么问题呢?

class example
{
    object locker = new object();
    void start()
    {
        for (int i = 0; i < 1000; i++)
        {
            (new Thread(dostuff)).Start();
        }
    }
    void dostuff()
    {
        lock (locker)
        {
            //dosomething
        }
    }
}

最佳答案

看起来您正在启动 1000 个线程,然后锁定每个线程。这意味着 dostuff 中的代码(位于锁定部分)将按顺序执行,而不是同时执行。

正如所写,直接在 for 循环中调用 dostuff() 会更有效。

关于c# - 这把锁有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462613/

相关文章:

c# - 将阻塞调用包装为异步以实现更好的线程重用和响应式 UI

javascript - 如何检测 Node 进程/脚本是否已经在运行?

c# - wpf如何删除矩形(角)线形式边框

c# - 如何在 javascript 中获取 HttpWebRequest 范围?

c# - 如何配置 mod_mono 以运行 .NET 4.5

c# - 如何使用 HttpClient 和 Polly 制定重试或回退策略以使用不同的 URL 重试?

c# - 如何将选定的文件详细信息传递到另一个页面 - UWP?

c# - 导出到 Excel 电子表格 (XLSX) 失败

c# - 在 Jenkins 中构建后,msbuild.exe 不是可识别的命令

asp.net-mvc - 在 Action 内的单独线程上运行方法