|
Как писать на С++ при создание приложений под ARM, Примеры |
|
|
|
 |
Ответов
|
Sep 22 2011, 13:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Естественно, это стандартная реализация инициализации статических объектов функции (а блокировка зависит от того thread safe этот код или нет). конечно thread-safe, иначе запарки с конструкторами небыло бы, вернее с необходимостю явного вызова конструктора, переименованного в init(..);. Цитата Это почему это? Компилятор делает это самостоятельно и совершенно прозрачно от программиста, в этом и преимущество. и от куда он знает как у нас реализована блокировак и как ею пользоватся? по моему он никак не догадывается, что у меня есть функции CreateKernelObject(MUTEX_TYPE),OpenMutex(ko),CloseMutex(ko) итд... Код Вовсе не обязательно. У нас в одном проекте через месяц программист нашел эту ошибку. А до этого все как-то жило себе и ничего. Заполните .bss каким-нибдь криптографическим рандомом :D (кроме шуток) и бага вылезет моментально  Цитата Применяется, главным образом, для борьбы с зависимостью от порядка компиляции объектов. Большого оверхеда не тянет. Чет не вьехал.. что за зависимость от порядка компиляции обьектов и когда она возникает?
|
|
|
|
|
Sep 22 2011, 14:38
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Компилятор ничего не знает о потоках, процессах и тд! Ни PC, ни эмбеддед. Соответственно, никаких блокировок не должен использовать. Singleton - удобный способ создания одного(И только одного) объекта класса. Если на пальцах - при первом вызове "псевдоконструктора" происходит создание объекта, при последующих - возвращается ссылка на первый объект. Помимо этого у него ест еще одно полезное свойство - не нужно хранить указатель на объект. Мы его получаем по имени класса. По поводу порядка инициализации. Порядок инициализации объектов определен лишь в пределах одной единицы трансляции. Соответственно, имя два cpp файла нельзя сказать, статические переменные какого файла будут проинициализированны первыми. Я с этим борюсь так: у каждого сервиса есть 4 унаследованных метода: Init, Run, Stop, Done. Рассылкой multcast сообщений я их по очереди вызываю. Те сначала вызываются все методы Init, потом все методы Run и тд. Это вызывается лишь в одном месте программы, тем самым избегаю случая "забывания вызывания Init" Вот моя реализация синглтона CODE ///@class TClSingleton ///@brief Use access to object instance. ///After first call Instance() method, create instance of object. ///All next call Instance() method will return pointer to first object ///Typical use: /// <pre> ///@code ///class SignleObject: public TClSigneton<SingleObject> ///{ /// friend class TClSigneton<SingleObject>; /// . . . . . /// protected: /// SignleObject(); ///} ///...... ///SignleObject* pclObject_ = SignleObject::Instance(); // Will be created object, or return pointer on early created oblect ///...... ///@endcode /// </pre> template <class ClSignleObject> class TClSingleton { public: /// Static method. Will be used in inheritor /// @return Pointer to object instance inline static ClSignleObject* Instance();
protected: /// Protected default constructor TClSingleton(){} };
///@brief Realization of instance() method template <class ClSignleObject> inline ClSignleObject* TClSingleton<ClSignleObject>::Instance() { TClCriticalSection<true> clCS_;
static ClSignleObject* pclInstance_s = new ClSignleObject(); return pclInstance_s; }
Сообщение отредактировал IgorKossak - Sep 22 2011, 15:56
Причина редактирования: [codebox]
|
|
|
|
Сообщений в этой теме
Hellper Как писать на С++ при создание приложений под ARM Jun 18 2011, 20:15 Danis Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 18 2011, 20:21 scifi Цитата(Danis @ Jun 19 2011, 00:21) Доволь... Jun 18 2011, 20:53 zltigo QUOTE (Hellper @ Jun 18 2011, 23:15) тяну... Jun 18 2011, 20:36 haker_fox QUOTE (Hellper @ Jun 19 2011, 05:15) и тя... Jun 19 2011, 03:03 gladov Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 20 2011, 04:34 dxp Цитата(gladov @ Jun 20 2011, 11:34) С++ п... Jun 20 2011, 07:32  gladov Цитата(dxp @ Jun 20 2011, 11:32) Два, нет... Jun 21 2011, 06:40   dxp Вынужден категорически не согласиться по всем пунк... Jun 21 2011, 08:47    scifi Цитата(dxp @ Jun 21 2011, 12:47) Если вы ... Jun 21 2011, 09:21  777777 Цитата(dxp @ Jun 20 2011, 11:32) Почему в... Sep 22 2011, 04:49   andrewlekar Цитата(777777 @ Sep 22 2011, 10:49) О как... Sep 23 2011, 04:49    777777 Цитата(andrewlekar @ Sep 23 2011, 08:49) ... Sep 23 2011, 05:52     dxp Цитата(777777 @ Sep 23 2011, 12:52) Во-вт... Sep 23 2011, 07:02 haker_fox QUOTE (gladov @ Jun 20 2011, 13:34) и еще... Jun 20 2011, 08:07  MrYuran Цитата(haker_fox @ Jun 20 2011, 12:07) 3.... Jun 20 2011, 09:54 klen Цитата(gladov @ Jun 20 2011, 08:34) С++ п... Jun 20 2011, 10:45 Axel Цитата(gladov @ Jun 20 2011, 07:34) ...пр... Jun 20 2011, 11:22 demiurg_spb Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 20 2011, 11:35 Danis ТС, позвольте не большой, скромный вопрос к Вам. З... Jun 20 2011, 12:15 GDI ringbuffer-dlya-embedded - пример кода, и даже не ... Jun 20 2011, 13:11 Hellper Цитата(GDI @ Jun 20 2011, 17:11) ringbuff... Jun 20 2011, 16:05 brag Да, стоит сделать new, как c++ тянет библиотечный ... Jun 21 2011, 08:09 brag согласен, обзор полностью верный. и применять тот ... Jun 21 2011, 09:33 scifi Цитата(brag @ Jun 21 2011, 13:33) пример ... Jun 21 2011, 09:39  Axel Цитата(scifi @ Jun 21 2011, 12:39) ...где... Jun 21 2011, 10:14  dxp Цитата(scifi @ Jun 21 2011, 16:39) При вс... Jun 21 2011, 11:58   scifi Цитата(dxp @ Jun 21 2011, 15:58) В общем,... Jun 21 2011, 14:37    Danis Цитата(scifi @ Jun 21 2011, 17:37) Другим... Jun 21 2011, 15:55 brag ЦитатаПри всём уважении, это голословное утвержден... Jun 21 2011, 10:30 Danis dxp, как у вас терпения хватает писать такие длинн... Jun 21 2011, 13:27 brag dxp, спасибо большое за обзорчик, вроде все и так ... Jun 21 2011, 22:18 haker_fox dxp, спасибо за шикарные ответы!!!
Н... Jun 22 2011, 01:05 andrewlekar Расказ про ООП конечно увлекательный, но стоит учи... Jun 22 2011, 04:57 MrYuran Цитата(andrewlekar @ Jun 22 2011, 08:57) ... Jun 22 2011, 06:38 dxp Цитата(andrewlekar @ Jun 22 2011, 11:57) ... Jun 22 2011, 06:40  andrewlekar ЦитатаПоясните? И причём тут множественное наследо... Jun 22 2011, 07:38   Danis Цитата(andrewlekar @ Jun 22 2011, 11:38) ... Jun 22 2011, 08:28   haker_fox По сравнению с уважаемым dxp, я вообще не программ... Jun 22 2011, 08:32    andrewlekar Цитата(haker_fox @ Jun 22 2011, 14:32) А ... Jun 22 2011, 09:00     MrYuran Цитата(andrewlekar @ Jun 22 2011, 13:00) ... Jun 22 2011, 09:32     shreck Цитата(andrewlekar @ Jun 22 2011, 16:00) ... Jun 22 2011, 10:34     SergeyDDD Цитата(andrewlekar @ Jun 22 2011, 12:00) ... Jun 22 2011, 11:22     haker_fox QUOTE (andrewlekar @ Jun 22 2011, 18:00) ... Jun 22 2011, 11:30      zltigo QUOTE (haker_fox @ Jun 22 2011, 14:30) Я ... Jun 22 2011, 12:33   Danis Цитата(andrewlekar @ Jun 22 2011, 11:38) ... Jun 22 2011, 08:37   sergeeff Цитата(andrewlekar @ Jun 22 2011, 10:38) ... Jun 22 2011, 08:44 Danis Цитата(andrewlekar @ Jun 22 2011, 08:57) ... Jun 22 2011, 06:53 haker_fox QUOTE (andrewlekar @ Jun 22 2011, 13:57) ... Jun 22 2011, 08:13 dxp . Jun 22 2011, 06:29 dxp Цитата(haker_fox @ Jun 22 2011, 08:05) Не... Jun 22 2011, 07:37 Dima_G Цитата(Hellper @ Jun 19 2011, 03:15) Таки... Jun 22 2011, 08:35 zltigo История моей жизни. Когда-то очень давно, когда ко... Jun 22 2011, 11:14 Danis Кстати, прорабатывается новая версия стандарта С++... Jun 22 2011, 11:31 MrYuran Цитата(Danis @ Jun 22 2011, 15:31) Кстати... Jun 22 2011, 11:45 brag Пописал немного кода на С++ использованием динамич... Sep 21 2011, 22:05 dxp Цитата(brag @ Sep 22 2011, 05:05) Про кон... Sep 22 2011, 07:25 777777 Цитата(dxp @ Sep 22 2011, 11:25) Правда? ... Sep 22 2011, 15:40 sergeeff КодПро конструкторы и деструкторы правда пришлось ... Sep 22 2011, 09:51 brag ЦитатаЧем же так конструкторы не угодили? Это прос... Sep 22 2011, 12:11 dxp Цитата(brag @ Sep 22 2011, 19:11) НО. Нек... Sep 22 2011, 13:03 ReAl Насколько я понимаю, вот тут конструктор object бу... Sep 22 2011, 12:32 brag ЦитатаНасколько я понимаю, вот тут конструктор obj... Sep 22 2011, 12:47 brag ЦитатаObject& GetObject()
{
static Object ... Sep 22 2011, 13:13 dxp Цитата(brag @ Sep 22 2011, 20:13) Хе, еще... Sep 22 2011, 13:19 brag ЦитатаБольшинство объектов в программе, как правил... Sep 22 2011, 13:32 sergeeff Цитата(brag @ Sep 22 2011, 16:32) init ни... Sep 22 2011, 13:37 brag ЦитатаКомпилятор ничего не знает о потоках, процес... Sep 22 2011, 15:05 Dima_G Цитата(brag @ Sep 22 2011, 22:05) Qt+gcc ... Sep 22 2011, 15:16 sergeeff Цитата(brag @ Sep 22 2011, 18:05) Qt+gcc ... Sep 22 2011, 15:21 brag ЦитатаЛично налетал на гонки в синглтоне. Компилят... Sep 22 2011, 16:09 Dima_G Цитата(brag @ Sep 22 2011, 23:09) а реали... Sep 23 2011, 04:30 brag еще вопрос по поводу реюза кода. Как, на пример, в... Sep 22 2011, 17:45 AHTOXA Цитата(brag @ Sep 22 2011, 23:45) Нужно, ... Sep 22 2011, 18:32 brag а код? -ffunction-sections , а потом это все вручн... Sep 22 2011, 18:44 brag Реализовал через манипуляцию ld -r, линкер-скрипты... Sep 22 2011, 22:54 dxp Цитата(777777 @ Sep 22 2011, 22:40) Что з... Sep 23 2011, 04:50 brag Цитатаочитайте про "Placement new". Это ... Sep 23 2011, 10:15 MALLOY2 Ссылка в тему С++ & Cortex Sep 23 2011, 11:35 brag Хe, и множественному наследованию (по крайней мере... Sep 23 2011, 16:25 andrewlekar Множественное наследование от интерфейсов разумеет... Sep 23 2011, 17:22 BlackHead Вот набрёл на библиотеку С++
http://xpcc.sourcefor... Oct 5 2011, 10:21 kikos Лет 20 назад один из заказчиков (пожилой американс... Oct 31 2011, 13:32 Сергей Борщ QUOTE (kikos @ Oct 31 2011, 16:32) На воп... Oct 31 2011, 13:49  Forger Цитата(Сергей Борщ @ Oct 31 2011, 17:49) ... Oct 31 2011, 18:14 ReAl Цитата(kikos @ Oct 31 2011, 15:32) Более ... Nov 1 2011, 06:27 IgorKossak Господа критикующие, напоминаю, тема звучит Как пи... Nov 1 2011, 08:32 brag Как можно реализовать такую вещ без кривоты, rtti,... Dec 10 2011, 02:55 Forger Цитата(brag @ Dec 10 2011, 06:55) Как мож... Dec 10 2011, 07:09 alx2 Цитата(brag @ Dec 10 2011, 07:55) Как мож... Dec 11 2011, 10:37 neiver Массив указателей на объекты базового класса - это... Dec 10 2011, 07:29 brag ЦитатаДля полноты картины, расскажите, для чего ва... Dec 10 2011, 15:37 dxp Цитата(brag @ Dec 10 2011, 22:37) массив ... Dec 10 2011, 17:39 brag ЦитатаЕсли я правильно понял, что требуется работа... Dec 10 2011, 18:11 dxp Цитата(brag @ Dec 11 2011, 01:11) stl не ... Dec 10 2011, 21:44 brag да просто проект такой, что проще свое написать, ч... Dec 10 2011, 22:59 kan35 Писать на С++ под ARM точно так же как на любую др... Dec 11 2011, 09:52 brag Спасибо.
но это тоже не то, массив указателей все ... Dec 11 2011, 13:32
2 страниц
1 2 >
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|