J'ai besoin de créer une bibliothèque partagée d'un accès à la mémoire DB. Le PB n'est pas énorme, mais assez grand pour faire lourd à porter dans tous les processus en utilisant la bibliothèque partagée. Heureusement, il est assez statique, l'information, je n'ai donc pas à se soucier beaucoup de la synchronisation des données entre les instances de la bibliothèque partagée. Toutefois, ce que je fais à vous soucier de l'initialisation de la mémoire est une fois et plus jamais.
J'aimerais toutes les bibliothèques partagées pour avoir une bibliothèque étendue variable, mais je ne pense pas que c'est possible. Si c'est le cas, faites le moi savoir ... mais je sais que normalement chaque processus possède son propre exemplaire de la bibliothèque partagée du segment de données. Je ne pense pas qu'il y est un moyen de marquer une partie de ce segment de données partagées dans tous les cas de la bibliothèque.
Donc, je pense que je vais avoir besoin de l'accès à la bibliothèque de la DB dans la mémoire partagée. Toutefois, le premier exemple de la bibliothèque d'être lancé pour créer le besoin de mémoire partagée, joignez-y, et le charger avant que tous les autres cas, peut l'utiliser. Comment puis-je garantir que cette création / l'initialisation se passe une fois devant la mémoire partagée est utilisée?
Au début, je croyais que la non-existance du segment de mémoire partagée de le faire ... mais il existe une condition de créer et d'initialiser entre alors dans un autre exemple de la bibliothèque de la mémoire partagée, mais ne pas être en mesure d'y accéder car elle n'a pas encore été inited. Je sais que je peux stocker
posix mutex dans la mémoire partagée ... donc je suppose que je peux utiliser l'un d'eux. Toutefois, l'autre problème existe lorsque le segment de mémoire partagée est «à gauche» de précédentes séries.
Qu'arrive-t-il alors? Alors ... tous de la bibliothèque de "détacher" du segment, mais aucun d'entre eux le détruire. Maintenant, ce que ... la prochaine fois que la nouvelle bibliothèque commence il ya re-initialisation de la mémoire partagée, mais ne le seront pas.
Hummm ... des idées? Certains direction? Quelle est la méthode de synchronisation de mémoire partagée? Devrais-je utiliser un système de sémaphore? Serait-il pas souffrir de la même "chaud" problème de démarrage (détaché du processus de bibliothèque partagée, mais de mémoire / sémaphores toujours résident).
Ce sera écrit pour AIX 5, BTW, pour ceux qui sont intéressés.