powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Потокобезопасный singleton от Ninject
7 сообщений из 32, страница 2 из 2
Потокобезопасный singleton от Ninject
    #39590584
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pu4koffА большего от синглтона и его потокобезопасности и не нужно.
Нужно. Обычно еще нужно, чтобы он был ленивым.
...
Рейтинг: 0 / 0
Потокобезопасный singleton от Ninject
    #39590603
Pu4koff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныPu4koffА большего от синглтона и его потокобезопасности и не нужно.
Нужно. Обычно еще нужно, чтобы он был ленивым.
Согласен. В основном из-за этого и стали мудрить с синглтонами, так бы и сидели на статических классах.
...
Рейтинг: 0 / 0
Потокобезопасный singleton от Ninject
    #39590609
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныИнициализация поля экземпляра синглтона в статик-конструкторе в общем случае делает его не ленивым

Это было до .NET 4 - в 4 поведение поменяли, и статические поля всегда инициализируются лениво.
...
Рейтинг: 0 / 0
Потокобезопасный singleton от Ninject
    #39590617
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pu4koffСогласен. В основном из-за этого и стали мудрить с синглтонами, так бы и сидели на статических классах.

Далеко не только из-за этого. В статическом классе нельзя использовать полиморфизм, наследование, отделить интерфейс от реализации и т.п.
...
Рейтинг: 0 / 0
Потокобезопасный singleton от Ninject
    #39590671
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Кроме того он сталкивает лбами 2е парадигмы - расшаривать(синглетон) и изолировать(потоки)
Поэтому и молчит про задачу)
...
Рейтинг: 0 / 0
Потокобезопасный singleton от Ninject
    #39590950
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatСон Веры ПавловныИнициализация поля экземпляра синглтона в статик-конструкторе в общем случае делает его не ленивым

Это было до .NET 4 - в 4 поведение поменяли, и статические поля всегда инициализируются лениво.
Не всегда и не везде. Пример: https://codeblog.jonskeet.uk/2010/01/26/type-initialization-changes-in-net-4-0/ , код из подраздела "Lazy initialization: .NET 4.0". Если скомпилировать в MSVS 2017 в релизе, то вывод будет такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Before static method
In static method
Before construction
Before instance method
In instance method
Before static method using field
Type initialized
In static method using field
y = 0

- все вроде бы как положено, ленивая инициализация налицо. Но если собрать в дебаге, то вывод будет уже такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Before static method
Type initialized
In static method
Before construction
Before instance method
In instance method
Before static method using field
In static method using field
y = 0

- ленивостью уже и не пахнет. И аналогичный результат будет, если код скомпилировать в MSVS 2010 SP 1 в любой конфигурации.
Плюс там же по ссылке см. приписку про implementation-specific in terms of the C# compiler (пример с CachingSideEffect). Дабы обезопасить себя от таких нюансов, люди и пишут синглтоны с использованием Lazy/beforefieldinit/локов.
...
Рейтинг: 0 / 0
Потокобезопасный singleton от Ninject
    #39591011
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Ну х.з., выше уже говорили, что трудно представить ситуацию "не сыграл козырный туз":
Pu4koffпри таком варианте:
Код: c#
1.
private static readonly Singleton instance = new Singleton();


невозможна же ситуация, что instance в разное время будет ссылаться на разные объекты или что инициализатор new Singleton() отработает несколько раз для разных потоков? А большего от синглтона и его потокобезопасности и не нужно.
Пока статический конструктор не отработал, никто/ничто ведь не сможет использовать данный тип, верно? По завешению статического конструктора статическое поле будет гарантировано инициализированным.

По поводу ленивости, да. Однако, как правило, синглтоны используются в рантайме всегда (если нет, тогда и выбор синглтона - неудачное решение).
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Потокобезопасный singleton от Ninject
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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