C# 多线程写入文件:使用 Lock 语句实现线程安全
在 C# 中,可以使用 'lock' 语句来实现多线程写入文件时保证只有一个线程在操作。'lock' 语句用于定义一个临界区,只允许一个线程进入该区域,其他线程必须等待。
下面是一个示例代码:
using System;
using System.IO;
using System.Threading;
class Program
{
static readonly object locker = new object(); // 定义一个用于锁定的对象
static void Main()
{
// 创建多个线程并启动
for (int i = 0; i < 5; i++)
{
Thread thread = new Thread(WriteToFile);
thread.Start();
}
Console.ReadLine();
}
static void WriteToFile()
{
lock (locker) // 使用lock语句锁定临界区
{
using (StreamWriter writer = new StreamWriter('file.txt', true))
{
writer.WriteLine($'Thread {Thread.CurrentThread.ManagedThreadId} is writing...');
}
}
}
}
在上面的示例中,我们创建了 5 个线程,并且每个线程都会写入一条消息到文件中。通过使用 'lock' 语句锁定临界区,保证了每次只有一个线程可以进入到 'WriteToFile' 方法中进行写入操作,并且其他线程必须等待。
这样就可以确保只有一个进程在操作文件,避免了多个线程同时写入导致的数据混乱问题。
原文地址: https://www.cveoy.top/t/topic/qvh0 著作权归作者所有。请勿转载和采集!