crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Алексей1153
  опции профиля:
сообщение 19.11.2012, 8:52
Сообщение #1


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


вдруг задумался на такой вещью - нуждается ли область инициализации синглтона в обёртывании в критическую секцию ? Ведь конструктор вызовется при первом прохождении по объявлению статической переменной, а теоретически ситуация с одновременным вызовом MySingl::Inst() из двух потовок вполне возможна


class MySingl
{
    MySingl()
    {
    }

public:
    static MySingl& Inst()
    {
        //область инициализации синглтона
        //{
            static MySingl m;
        //}

        return m;
    }
};


Сообщение отредактировал Алексей1153 - 19.11.2012, 8:53
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Влад
  опции профиля:
сообщение 22.11.2012, 10:04
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 146
Регистрация: 20.3.2009
Из: Санкт-Петербург
Пользователь №: 627

Спасибо сказали: 46 раз(а)




Репутация:   8  


Цитата(Алексей1153 @ 21.11.2012, 15:54) *
...... тот, кто будет это потом поддерживать, будет плеваться. Я на себе это уже испытал :) Там шаблонить то нечего, это всё пишется за 5 минут максимум. Раз в полгода

То есть, ты предлагаешь в каждом проекте заводить свою реализацию синглтона? Во-первых, это как минимум копипаста, т.е. - зло. Причем, через несколько лет, когда разные программисты будут поддерживать и дописывать эти реализации по-разному, вдруг неожиданно окажется, что эти реализации работают по-разному и нельзя тупо выкорчевать из проекта одну и всунуть другую...
Во-вторых, проекты разные бывают.... Бывают - сильно долгоиграющие. И если в первой версии (простая однопоточная программа) сойдет и классический синглтон Мейерса без всяких защит и блокировок (ибо не от чего защищаться и некого блокировать), то через несколько лет, а то и пару десятков лет, прога лехко может стать многопоточной и для многопроцессорных машинок... И вот тут-то без блокировок и синхронизации уже не обойтись. А когда нужно синхронизировать еще и кэши разных процессоров... о майн готт!

(Я это все как раз проходил, последовательно.... И в результате пришел к выводу, что лучше написать единый шаблонный синглтон (примерно так, как приведено) - "написано однажды, используется везде". А поддерживать там особо-то нечего, - это приблизительно как STL: в исходниках черт ногу сломит, зато использовать без влезания "под капот" легко и приятно.)

Впрочем, свое видение проблемы я не навязываю. Так, высказал общие соображения.....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Алексей1153   инициализация синглтона   19.11.2012, 8:52
- - Iron Bug   да. я её всегда снабжаю мьютексом. мало ли какой п...   19.11.2012, 10:26
- - Алексей1153   к примеру, MyMutex - это оболочка для местного кла...   19.11.2012, 10:45
- - Влад   Синглтон - это, вообще-то, совсем не простая конст...   19.11.2012, 13:39
- - Алексей1153   Влад, никто и не говорит, что он прост. Но вот я р...   20.11.2012, 8:51
- - Iron Bug   Цитата(Алексей1153 @ 20.11.2012, 11:51) Н...   20.11.2012, 9:22
- - Алексей1153   Iron Bug, в моём случае не нужно шаблонов. Только...   20.11.2012, 13:00
- - ssoft   Обязательно синглтон обрамляется блокировкой. Либо...   20.11.2012, 13:28
- - Litkevich Yuriy   Цитата(Алексей1153 @ 20.11.2012, 10:51) Н...   21.11.2012, 12:49
- - Алексей1153   Litkevich Yuriy, тот, кто будет это потом поддержи...   21.11.2012, 14:54
- - Iron Bug   вот и я тоже юзаю шаблоны, как заготовки. сделал о...   21.11.2012, 17:44
- - Litkevich Yuriy   Цитата(Алексей1153 @ 21.11.2012, 16:54) к...   21.11.2012, 22:03
- - Iron Bug   а по-моему так шаблоны как раз очень даже повышают...   22.11.2012, 8:38
|- - ssoft   Цитата(Iron Bug @ 22.11.2012, 9:38) а по-...   22.11.2012, 9:40
- - Влад   Цитата(Алексей1153 @ 21.11.2012, 15:54) ....   22.11.2012, 10:04
- - Алексей1153   Цитата(Влад @ 22.11.2012, 13:04) То есть,...   22.11.2012, 12:37
- - Iron Bug   Цитата(Алексей1153 @ 22.11.2012, 15:37) к...   22.11.2012, 13:18
- - Алексей1153   Цитата(Iron Bug @ 22.11.2012, 16:18) ты о...   25.11.2012, 10:26


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 18.7.2025, 10:07