Necesito crear un conjunto de conexiones de socket que se servirán a varios subprocesos de trabajo. ¿Existe una implementación de grupo de objetos segura para subprocesos con una funcionalidad similar a Apache Commons 'GenericObjectPool
?¿Hay una implementación de grupo de objetos C++ segura y segura para subprocesos?
Respuesta
Normalmente utilizo TBB para implementar pools escalables seguros.
template <typename T>
class object_pool
{
std::shared_ptr<tbb::concurrent_bounded_queue<std::shared_ptr<T>>> pool_;
public:
object_pool()
: pool_(new tbb::concurrent_bounded_queue<std::shared_ptr<T>>()){}
// Create overloads with different amount of templated parameters.
std::shared_ptr<T> create()
{
std::shared_ptr<T> obj;
if(!pool_->try_pop(obj))
obj = std::make_shared<T>();
// Automatically collects obj.
return std::shared_ptr<T>(obj.get(), [=](T*){pool_->push(obj);});
}
};
+1 para TBB. ¡Quiéralo! –
La mejor implementación lista para usar que he encontrado hasta ahora es la de Poco (Portable Components - clean C++ framework).
Hay una clase Poco::ObjectPool
- vea la documentación here. Puede personalizarlo de varias maneras, proporcionando su propia fábrica que crea, valida, desactiva y destruye objetos.
Además, extrañamente, al momento de escribir esta respuesta, su sitio no contiene el último documento generado; mi última fuente Poco tiene una versión más nueva con algunas funcionalidades nuevas, p. hay un parámetro de tiempo de espera para borrowObject()
que fue crítico para mí.
- 1. ¿Es esta implementación de Singleton correcta y segura para subprocesos?
- 2. Implementación segura de singleton de subprocesos en C++
- 3. ¿Es esta una implementación de Singleton válida, floja y segura para subprocesos para C#?
- 4. ¿La implementación de glibc de fprintf() es segura para subprocesos?
- 5. ¿Una implementación segura de Page.IsPostBack?
- 6. ¿Es java.lang.Thread una clase segura para subprocesos?
- 7. Implementación segura de subprocesos de la memoria intermedia circular
- 8. Implementación de una pila genérica segura para subprocesos en C++ en linux
- 9. ¿Es segura la implementación de C++ para una flotación atómica?
- 10. ¿La serialización java.util.Vector es segura para subprocesos?
- 11. Implementación de contraseña remota segura para iPhone
- 12. Compilación de una extensión PHP como no segura para subprocesos
- 13. son lecturas simultáneas de una variable segura para subprocesos?
- 14. punteros que regresan de una manera segura para los subprocesos
- 15. ¿Esta combinación de ConcurrentDictionary y ConcurrentQueue es segura para subprocesos?
- 16. Inicialización segura de subprocesos de variables estáticas
- 17. ¿Hay una versión segura de strlen?
- 18. Implementación del algoritmo de ordenación más segura
- 19. Java: ¿la clase de excepción es segura para subprocesos?
- 20. Haciendo que una biblioteca C sea segura
- 21. ¿La conexión TADOConnection de Delphi es segura para subprocesos?
- 22. ¿La clase stdlib Logger de Ruby es segura para subprocesos?
- 23. Clase segura para subprocesos en Java mediante bloques sincronizados
- 24. Grupo de subprocesos de C++
- 25. ¿Por qué la lectura no es segura para subprocesos?
- 26. ¿Hay alguna manera de usar errno de forma segura en una aplicación de subprocesos múltiples?
- 27. Tema mersenne segura tornado
- 28. ¿Cómo uso rand_r y cómo lo uso de una manera segura para subprocesos?
- 29. Cola segura para subprocesos en Javascript o jQuery
- 30. Manipulación segura de objetos LDAP con VBscript con credenciales alternativas
¿hay alguna discusión sobre los documentos de impulso en la seguridad de subprocesos de flyweight? – creatiwit
@shrin: Si Flyweight es o no seguro para subprocesos depende de la [política de bloqueo] (http://www.boost.org/libs/flyweight/doc/reference/locking.html) que especifique. – ildjarn