Gérer des accès concurrents à une bdd [VC++ / BDD] - C++ - Programmation
Marsh Posté le 08-08-2003 à 11:47:14
et eupp de soutien
Marsh Posté le 08-08-2003 à 12:02:17
Je squatte le topic des mutex...mais mes premiers test (avec une seule appli multithreadée) sont pas concluants...
Marsh Posté le 08-08-2003 à 12:52:03
ben si multi thread mutex. sinon si multi proc, memoire partagée si ça existe sous windows. sinon, comme apparemment y a pas de verrou possible au sein meme de la base de données, je vois pas comment faire quelque chose de solide en externe. tu peux tenter avec un fichier, mais ça sera trop trop lent et ça peut poser des problèmes. moi ce que je ferais, et encore une fois je sais pas si c'est possible sous windows, c'est un processus arbitre qui reçoit des demandes et autorise par signaux. c'est pas tres tres rapide, mais ça doit bien marcher
Marsh Posté le 08-08-2003 à 12:58:30
Ca devient complexe...
Bon, j'essaie de le faire marcher correctement sur une machine avec des mutex, déjà...
Marsh Posté le 08-08-2003 à 13:58:20
Taz a écrit : ben si multi thread mutex. sinon si multi proc, memoire partagée si ça existe sous windows. |
La mémoire partagée peut s'émuler via des fichier mappés sous windows.
Taz a écrit : moi ce que je ferais, et encore une fois je sais pas si c'est possible sous windows, c'est un processus arbitre qui reçoit des demandes et autorise par signaux. c'est pas tres tres rapide, mais ça doit bien marcher |
Ct ma première idée, c un poil technique. Ha mon avis pour ce qu'il veut faire les mutex devraient suffir.
Marsh Posté le 08-08-2003 à 14:00:51
Les acces concurents à une base de donnée doivent être gérés par la base de donnée sinon ça s'appelle un fichier et pas une base de donnée.
Sinon pour Access, on peut très bien avoir plusieurs connexions simultanées ( le programme sur lequel je travail le fait ), le seul cas que je connaisse où ça pose problème c'est quand la base est ouverte ne mode administrateur.
Marsh Posté le 08-08-2003 à 14:30:47
seblamb a écrit : Les acces concurents à une base de donnée doivent être gérés par la base de donnée sinon ça s'appelle un fichier et pas une base de donnée. |
Alors c'est quoi ce message de merde du driver odbc? (cf premier post)
Citation : |
Ca veut dire que les mutex sont vraiment inutiles?
Marsh Posté le 08-08-2003 à 14:35:32
Pendant que j'y pense, pour compacter la base il va quand même falloir que le reste n'accède pas à la bdd...
Marsh Posté le 08-08-2003 à 15:09:53
Bon, à-priori ya plus que le compactage de la bdd par un de mes threads qui pose pb...
Le compactage doit se déclencher automatiquement en fonction du rapport (nb de lignes dans la base) / (poids de la base).
Là normalement il faut que je bloque tout accès à la base de données non?
Vous feriez comment?
Marsh Posté le 08-08-2003 à 11:14:26
Bonjour!
Je suis en train de devenir chèvre, donc je viens demander conseil.
Je développe actuellement sous visual 2 applis différentes accédant toutes les 2 à la même base de données, via une classe dédiée que j'utilise pour les 2.
Dans cette classe, je me connecte à une bdd MS-Access, via ODBC et des objets CDatabase et CRecordset.
Etant donné qu'à l'exécution j'ai clairement des pbs d'accès à ma bdd ("Impossible d'utiliser 'l'; fichier en cours d'utilisation" ), j'aimerais savoir comment vous résolvez ce type de problèmes, et quels moyens mettre en place pour obtenir un fonctionnement correct de mes accès à la bdd.
Merci de vos conseils.