Я пытаюсь создать поточно-безопасный метод.Любые проблемы параллелизма с моим кодом
Кто-нибудь видит проблемы параллелизма со следующим кодом?
Мне кажется, что это нормально, , хотя я никогда не мог найти способ проверить параллельность этого метода. Любая помощь будет оценена по достоинству.
//static locker for thread synchronization
private static readonly System.Object _object3 = new System.Object();
//this method needs to be thread-safe
public static void LogToTextFile(string logMessage, LogLevel logType)
{
//make sure only one thread executes this file writing code at a time
lock (_object3)
{
using (StreamWriter w = File.AppendText(@"c:\logs\log1.txt");
{
w.WriteLine("\r\n{0} logged at {1} {2} : {3}", logType.ToString().ToUpper(), DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString(), logMessage);
}
}
}
Если у вас все в порядке с высокой степенью сериализации, это должно работать нормально.(Это скорее общий комментарий к случаю, вы все равно не можете сериализовать ввод-вывод.) Проблемы параллелизма, как правило, возникают из-за координации доступа к нескольким «ресурсам» или совместного использования ресурсов, что не является вашим делом , – millimoose
Ой, очевидно, что проблема может возникнуть, если какой-либо другой код попытается открыть тот же файл. – millimoose
@millimose - вы имеете в виду, что другая часть кода записывает в тот же файл или читает из того же файла. Я думаю, что чтение не вызовет проблем, но письмо будет? – Sunil