powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Почему такой результат потокобезопасного синглтона
3 сообщений из 3, страница 1 из 1
Почему такой результат потокобезопасного синглтона
    #40031533
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
У меня есть следующий код потокобезопасного синглтона:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public class Singleton
{
        private static Singleton instance;
        private static readonly object threadlock = new Object(); 

        private string Name;

        private Singleton(String name)
        {
           Name = name;
        }

        public static Singleton getInstance(string name)
        {
             if(instance == null)
	     {
		    lock(threadlock) 
		   {
		        instance = new Singleton(name);
		   }
	    }
            return instance; 
        }

        public void Print()
        {
           Console.WriteLine(Name);
        }
 }



Вот мой код использования синглтона в программе с двумя потоками:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 static void Main(string[] args)
{
            //Дополнительный поток (поток2)
             (new Thread(() =>
                {
                    var obj1 = Singleton.getInstance("obj1");
                        obj1.Print();
            
                })).Start();

            //Основной поток (поток1)
            var obj2 = Singleton.getInstance("obj2");
            obj2.Print();
}



Результат выполнения программы:
obj2
obj1

Вопрос: Почему результат содержит две строки obj1 и obj2, ведь есть конструкция lock???
Сухов А.А.
...
Рейтинг: 0 / 0
Почему такой результат потокобезопасного синглтона
    #40031538
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASukhov1986,

двойную проверку на null потеряли: после lock
и вообще тема-то избитая: https://habr.com/ru/post/147373/
...
Рейтинг: 0 / 0
Почему такой результат потокобезопасного синглтона
    #40031547
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Почему такой результат потокобезопасного синглтона
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]