- В приложении у нас есть что-то около 30 типов объектов, которые создаются неоднократно.
- Некоторые из них имеют долгую жизнь (часы), некоторые из них имеют короткие (миллисекунды).
- Объекты могут быть созданы в одном потоке и уничтожены в другом.
Кто-нибудь знает, что может быть хорошей технологией объединения в смысле минимальной задержки создания/уничтожения, низкой блокировки и разумного использования памяти?Метод объединения объектов с минимальными задержками в многопоточном приложении
Приложение 1.
1.1. Распределение пула объектов/памяти для одного типа обычно не относится к другому типу (см. 1.3 для исключения).
1.2. Распределение памяти выполняется только для одного типа (класса) во времени, обычно для нескольких объектов во времени.
1.3. Если тип агрегирует другой тип, используя указатель (по какой-то причине), эти типы выделяются вместе в одной непрерывной части памяти.
Приложение 2.
2.1. Известно, что использование коллекции с сериализацией доступа для каждого типа хуже, чем новое/удаление.
2.2. Приложение используется на разных платформах/компиляторах и не может использовать трюки для компилятора/платформы.
Append 3.
Становится очевидным, что реализация быстро (с минимальной задержкой) следует организовать объект объединения в звездообразной сети заводов. Там, где центральная фабрика является глобальной для других конкретных отраслей. Регулярное предоставление/рециркуляция объектов более эффективно делать на фабрике с конкретным потоком, в то время как центральный завод может использоваться для балансировки объектов между потоками.
3.1. Каков наиболее эффективный способ организации связи между центральным заводом и фабриками, зависящими от резьбы?
Знаете ли вы заранее время жизни объекта или передаете потоки? – hazzen 2008-09-19 05:41:38
К сожалению нет. Это определяется логикой приложения. – user18547 2008-09-19 06:29:38