![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Andrew121 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 21.6.2009 Репутация: 1 Всего: 1 |
Прошу прощения за оффтоп.
В этом: http://forum.vingrad.ru/index.php?showtopi...t&p=1923072 посте я насчитал 13 смайликов. Значит довольна. Не зря старались ![]() |
|||
|
||||
Леопольд |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Проблема в том что map можно менять, при этом, например, все итераторы, которые уже на что-то указывают, становятся невалидными. Можно доработать эту фабрику так, что-бы она работала безопасно с точки зрения многопоточности, не меняя внешнего интерфейса. Но здесь это точно ни к чему, как и singleton. Я упомянул о нём, для того что бы показать что может быть некоторое количество проектных решений одной и той же задачи. После освоения С++ классов, стоит уделить внимание ООП. Сам С++ только предоставляет свои средства для этого. Я в своё время не придавал этому особого значения, а зря, потому что понимая ООП, перестаешь просто пользоваться классами, полиморфизмом и т.п. а начинаешь использовать возможности языка целенаправленно, заранее спроектировав систему. Насколько я вижу, KasMP сначала кодирует, а потом уже пытается сложить все части вместе. Наоборот, сложнее, но гораздо эффективнее. Книжка GoF невелика и читается легко (как мне показалось). Я прочёл её за две недели, а она перевернула мое представление о том как надо создавать программы. Касательно многопоточности: Насколько я понимаю, проблема может быть только с разделяемыми сущностями, которые реагируют изменением состояния на действия пользователя. Т.е. можно получить совсем не то что ожидалось, потому что состояние сущности было изменено другим потоком. С другой стороны, этим можно воспользоваться в своих целях - мьютексы, семафоры, локеры... А если объект не меняет своего состояния за время жизни, то он безопасен. Добавлено @ 09:26
По шаблонам, и их возможностям на сегодняшний день, есть книжка "Шаблоны С++. Справочник разработчика" 538 стр. А5 Как раз её я сейчас прочёл наполовину ![]() Это сообщение отредактировал(а) Леопольд - 17.7.2009, 09:27 -------------------- вопросов больше чем ответов |
||||
|
|||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
зачем? если можно просто не делать ее синглтоном ![]()
потоко-безопасен. Ответ: скорее всего - да, (в общем случае - нет). Речь идет о контейнерах STL, а thread safety guarantee STL контейнеры не дают. Надо смотреть доки конкретной реализации STL. Гарантию на потоко-безопасное чтение дает реализация STL от SGI. В общем случае - такой гарантии нет. |
||||
|
|||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
5000 потоков могу использовать одну, разделяемую, фабрику. Кстати, можно ли её вынести в динамически подключаемую либу? Я с этим не разбирался, и не знаю, как шарится память между разными программами. -------------------- вопросов больше чем ответов |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
А если она будет не шаблонная? -------------------- вопросов больше чем ответов |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Цифра, конечно, нереальная, для обычных ситуаций ![]() Например, нам надо порождать ISUP сообщения, а каждое соединение обрабатывается в отдельном потоке. Я работаю, в основном, с MSC (Mobile Switching Center) ![]() Это сообщение отредактировал(а) Леопольд - 17.7.2009, 10:37 -------------------- вопросов больше чем ответов |
|||
|
||||
Леопольд |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Что они творят! Вот пример, из книги, немножко переделан, для наглядности:
-------------------- вопросов больше чем ответов |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
Леопольд |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
Можно задавать параметры шаблона в любом порядке, при этом остальные останутся по умолчанию. Я был впечатлён. Настолько, что решил поделиться ![]()
Это сообщение отредактировал(а) Леопольд - 17.7.2009, 16:33 -------------------- вопросов больше чем ответов |
||||||
|
|||||||
KasMP |
|
||||||||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 586 Регистрация: 8.8.2006 Репутация: нет Всего: 30 |
Спасибо, учтем на будущее ![]()
![]()
![]() ![]() Вопросов пока нет - я пыталась сделать все это более простым способом ![]()
Ну, в ней есть главы и про шаблоны, и про STL... Хотя не исключено, что для вас это будет "практически ничего" ![]() Посмотрим ![]() ![]() ![]()
![]() ![]() ![]() ______________________________________________ Пусть есть полиморфный класс Base и производные от него Der, Der1 и Der2. Я хочу уметь приводить переменные типа Base* к типу Der*, Der1* или Der2*. "Более простой" способ имеет 2 основные составляющие:
Но у меня все совсем по-другому: На строках типа
![]() ![]() ![]() |
||||||||||||||||||||
|
|||||||||||||||||||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Скорее всего результат приватного наследования.
надо заменить на
Это сообщение отредактировал(а) azesmcar - 19.7.2009, 10:41 |
||||||
|
|||||||
GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
а можно попросить пример с boost::serialization?
в моей программе как раз буст нужно использовать. И.... как подключить boost к MSVC ? |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |