Jean Labrosse (25.10.2005 17:04, просмотров: 1) ответил ReAl на Угу, и конструктор приватный, чтобы иначе, чем через функцию - и создать нельзя было. А по RTOS -
Совершенно верно. Упоминая RTOS я имел в виду ту же проблему, что с ISR. Кроме того, Если класс Critical является wrapperом критической секции (реализация например через запрет прерываний), то
static MySingleton& getInstance() {
Critical section;
static MySingleton s;
return s;
}
позволяет решить потенциальную проблему двойного вызова конструктора (если таковая есть -- зависит от реализации static в компиляторе). Но и это не есть хорошо, т.к. при любом обращении к getInstance() будут блокироваться прерывания. Как вариант можно кешировать возвращенное значение
MySingleton& x = MySingleton::getInstance();
x.method1();
x.method2();
x.method3();
О чем это я... :) Ну наверно singleton в классическом виде не очень подходил для embedded систем (и не в мегабайте флеши тут дело как кое-кто писал).