Здравствуйте, гость ( Вход | Регистрация )
Влад | Дата 29.9.2009, 16:23 |
Гм, ну если уж говорить о кроссплатформе, то наиболее изящным решением представляется применение boost::call_once вкупе с boost::once_flag. | |
Litkevich Yuriy | Дата 28.9.2009, 21:59 |
ага, уже разобрался, в Вкикпедии прочитал | |
AD | Дата 28.9.2009, 21:16 |
а Почему собственно Double? вроде в каждой фукции блокировка одна Идет двойная проверка. А описано подробно у Александреску! А мне спать больше надо, тогда буду внимательнее... Простите, если что! |
|
Litkevich Yuriy | Дата 28.9.2009, 21:13 |
Double-Checked Locking а Почему собственно Double? вроде в каждой фукции блокировка одна |
|
Влад | Дата 28.9.2009, 20:46 |
Ага, этот пример кода выдран с корнем из реально работающего (уж года два как... в режиме 24x7) проекта. m_me - это как раз и есть объект-одиночка, а m_cs - это объект блокировки (под MFC это критическая секция, но, в принципе, с таким же точно успехом при минимальной модификации кода может быть и posix-ный mutex). В коде принципиально, что m_me должен быть именно volatile. Это - просто пример реализации идиомы Double-Checked Locking, а более подробно о ней может рассказать и гугл; по-моему, тема подробно освещена у классиков типа Мейерса, Саттера.... вот только не помню, у кого точно. |
|
Litkevich Yuriy | Дата 28.9.2009, 20:29 |
AD, указатель в его примере - m_me | |
AD | Дата 28.9.2009, 20:25 |
Влад, поясни пожалуйста свой код. И m_cs что такое? Я не Влад, но могу пояснить. Собственно, m_cs указатель на объект одиночки! |
|
Litkevich Yuriy | Дата 28.9.2009, 18:45 |
Влад, поясни пожалуйста свой код. И m_cs что такое? |
|
Влад | Дата 28.9.2009, 11:23 |
Не совсем так. Правильный (имхо) пример кода приведен ниже:
|
|
AD | Дата 27.9.2009, 23:56 |
1. конструкторы-деструкторы, которые ты хочешь скрыть, не обязательно реализовывать с пустым телом {}, достаточно просто объявить их private; они у меня с пустым телом, т.к. в моём применении они были не нужны.Ну вот, раз не нужны, то можно объявлять вообще без тела! имеется в виду для основных переменных "Одиночки" (*p_this и cnt)? Нет. В смысле сделать так:
|
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 15.5.2024, 5:08 |