c# - 只有多个线程之一执行特定代码路径

标签 c# .net multithreading

我有多个线程大致同时启动 --- 所有线程都执行相同的代码路径。每个线程都需要将记录写入数据库中的表。如果该表不存在,则应创建它。显然,两个或多个线程可能会发现该表丢失,并尝试创建它。

确保此特定代码块仅由一个线程执行一次的首选方法是什么。

当我在 .NET 2.0 上用 C# 编写时,我假设该方法是框架/语言中立的。

最佳答案

像这样的东西应该有用...

private object lockObject = new object();

private void CreateTableIfNotPresent()
{
    lock(lockObject)
    {
        // check for table presence and create it if necessary, 
        // all inside this block
    }
}

让您的线程调用 CreateTableIfNotPresent 函数。 lock block 将确保没有线程能够同时执行 block 内的代码,因此没有线程能够在另一个正在创建表时将表视为不存在。

关于c# - 只有多个线程之一执行特定代码路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1504653/

相关文章:

multithreading - 子进程与父进程共享资源吗?

c# - 安装 AspNet5RC1 后,无法再在任何以前/新的 MVC 项目中打开 cshtml 文件

c# - 获取 xelement 属性值

c# - 如何在 C# 中正确模拟 TSQL 的 DateDiff

c# - 具有继承和接口(interface)的泛型 - 为什么这不起作用?

c# - 调用可变参数方法

.NET 3.0 中的 C# WebUtility.HtmlEncode

c# - 序列化同名的 XML 元素和 XML 数组项

java - 将线程注册到 Phaser

c++ - 多维数组初始化: Any benefit from Threading?