[C con Clase] Tabla de hash y concurrencia

Programante programante en gmail.com
Lun Abr 13 20:21:48 CEST 2009


Fernando Rodriguez escribió:
> Hola a todos:
> Estoy construyendo una .dll que necesita acceder muy rápidamente a
> ciertos datos.
> Una tabla de hash en memoria es ideal para esto. Esta tabla de hash se
> utilizará solo para lectura, en ningún caso se va a modificar la
> misma.
> La .dll va a ser utilizada por varios .exe a la vez
> (concurrentemente), el problema surge en no tener que una nueva
> instancia de la .dll cada vez que un .exe nuevo quiere utilizarla. Es
> decir, que no se replique la tabla de hash por cada exe que la
> utilize, x el contrario que todos los exe utilicen la misma tabla de
> hash.
> La pregunta es:
> Es posible compartir una misma instancia de la .dll con los .exe?.
> En caso de que si, voy a tener algún problema de concurrencia?
>
> Gracias y saludos.
Sí se puede. Tendrás que colocarlo en un segmento compartido.
http://msdn.microsoft.com/en-us/library/h90dkhs0%28vs.71%29.aspx

Para la concurrencia, mantén un contador basado en PROCESS_ATTACH y
PROCESS_DETACH.
http://www.experts-exchange.com/Programming/Languages/CPP/Q_20872796.html

Recuerda no usar punteros en la tabla hash.

Otra opción, ya que no vas a modificarla, es crear la tabla hash antes
de compilar de modo que esté
en el segmento de datos estáticos, el cual se comparte.





Más información sobre la lista de distribución Cconclase