Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# mutex

作者:颓废的爱情   发布日期:2026-01-13   浏览:9

using System;
using System.Threading;

class Program
{
    // 定义一个互斥体,用于同步多个线程对共享资源的访问
    private static Mutex mutex = new Mutex();

    static void Main()
    {
        // 创建两个线程来模拟并发访问
        Thread thread1 = new Thread(WriteToConsole);
        Thread thread2 = new Thread(WriteToConsole);

        thread1.Start();
        thread2.Start();

        thread1.Join();
        thread2.Join();
    }

    static void WriteToConsole()
    {
        // 尝试获取互斥体锁
        mutex.WaitOne();

        // 打印当前线程的名称和ID
        Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} is writing to the console.");

        // 模拟一些耗时操作
        Thread.Sleep(1000);

        // 释放互斥体锁
        mutex.ReleaseMutex();
    }
}

解释说明:

  • Mutex 是一种同步原语,用于确保多个线程不会同时访问共享资源。它可以在进程内或进程间使用。
  • mutex.WaitOne():尝试获取互斥体锁。如果锁已被其他线程持有,则当前线程会阻塞,直到锁被释放。
  • mutex.ReleaseMutex():释放互斥体锁,允许其他等待的线程获取锁。
  • 在这个示例中,两个线程尝试同时写入控制台,但由于互斥体的存在,每次只有一个线程能够成功获取锁并执行写入操作,从而避免了竞态条件。

上一篇:c# intptr

下一篇:c# backgroundservice

大家都在看

c# 二进制

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

c#网络编程

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站