voila j'ai fait une expérience avec un mutex partagé entre deux PC
PC1 et PC2 sont en réseau
Main1.exe et Main2.exe sont identique, la seule différence est celle_ci :
#ifdef CLIENT1
fprintf(pFile,"Client 1 Valeur : %d \n",iValue) ;
#else
fprintf(pFile,"Client 2 Valeur : %d \n",iValue) ;
#endif
Main1.exe et Main2.exe créer un Mutex s'il n'est pas deja existant, puis
accèdent en lecture au fichier
setting.ini, ils y lise une valeur, qu'il vont incrémenter et écrire dans le
fichier setting, puis ils écrivent
dans le fichier Vérification une ligne du genre :
Client 1 Valeur : 15
cela signifie que le client 1 est venu lire la valeur 14 dans le fichier
setting, et l'a incrémenté.
Voici la config matériel :
sur PC1
Main1.exe
Main2.exe
Setting.txt
Verification.txt
sur PC2
un raccourcie de Main2.exe
je lance Main1 sur PC1
je lance Main2 sur PC2, mais il est exécuté dans l'environnement de PC1
et trés étrangement (mais heureusement rarement) j'obtiens ces choses la :
Client 2 Valeur : 49
Client 2 Valeur : 50
Client 2 Valeur : 52
Client 1 Valeur : 51 // le 52 est venu avant le 51 :)
lors d'un autre test :
Client 2 Valeur : 21
Client 2 Valeur : 22
Client 2 Valeur : 22 // L'utilisation de mutex est justement utilisée pour
éviter
Client 1 Valeur : 23 // ce genre de problème :)
quelq'un a t'il déjà utilisés les mutex partagés entre deux PC ?, a t-il
rencontré des problèmes similaire.
vous avez des idées pour résoudre mon ptit problème ? le source peut être
mis à dispo si quelqu'un le veux
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Arnaud Debaene
Grégory Schulz wrote:
Bonjour,
voila j'ai fait une expérience avec un mutex partagé entre deux PC
Ca n'existe pas les mutexs partagés entre PC! In mutex est local a une machine. Où as tu vu qu'il en était autrement?
PC1 et PC2 sont en réseau
Main1.exe et Main2.exe sont identique, la seule différence est celle_ci : #ifdef CLIENT1 fprintf(pFile,"Client 1 Valeur : %d n",iValue) ; #else fprintf(pFile,"Client 2 Valeur : %d n",iValue) ; #endif
Main1.exe et Main2.exe créer un Mutex s'il n'est pas deja existant, puis accèdent en lecture au fichier setting.ini, ils y lise une valeur, qu'il vont incrémenter et écrire dans le fichier setting, puis ils écrivent dans le fichier Vérification une ligne du genre :
Client 1 Valeur : 15
cela signifie que le client 1 est venu lire la valeur 14 dans le fichier setting, et l'a incrémenté.
Voici la config matériel :
sur PC1
Main1.exe Main2.exe Setting.txt Verification.txt
sur PC2
un raccourcie de Main2.exe
je lance Main1 sur PC1 je lance Main2 sur PC2, mais il est exécuté dans l'environnement de PC1
Ca veut dire quoi "dans l'environnement de PC1"? Tel que tu le décris, Main2 s'exécute sur PC2 (PC1 sert juste de serveur de fichiers).
et trés étrangement (mais heureusement rarement) j'obtiens ces choses la :
Client 2 Valeur : 49 Client 2 Valeur : 50 Client 2 Valeur : 52 Client 1 Valeur : 51 // le 52 est venu avant le 51 :)
lors d'un autre test :
Client 2 Valeur : 21 Client 2 Valeur : 22 Client 2 Valeur : 22 // L'utilisation de mutex est justement utilisée pour éviter Client 1 Valeur : 23 // ce genre de problème :)
En réalité, les 2 programmes accèdent de manière concurrente au fichier, avec en plus tout le mécanisme de cache réseau qui entre en jeu (comment sont ouverts les différents fichiers? En accès exclusif?)
quelq'un a t'il déjà utilisés les mutex partagés entre deux PC ?
Encore une fois, ca n'existe pas! Comment fais tu (ou penses tu faire) pour ouvrir depuis PC2 un mutex existant sur PC1 ?
vous avez des idées pour résoudre mon ptit problème ?
C'est quoi le but réel? Accéder de manière non concurrente à un seul fichier depuis plusieurs PC?
le source peut être mis à dispo si quelqu'un le veux
Tu peux le poster ici.
Arnaud
Grégory Schulz wrote:
Bonjour,
voila j'ai fait une expérience avec un mutex partagé entre deux PC
Ca n'existe pas les mutexs partagés entre PC! In mutex est local a une
machine. Où as tu vu qu'il en était autrement?
PC1 et PC2 sont en réseau
Main1.exe et Main2.exe sont identique, la seule différence est
celle_ci : #ifdef CLIENT1
fprintf(pFile,"Client 1 Valeur : %d n",iValue) ;
#else
fprintf(pFile,"Client 2 Valeur : %d n",iValue) ;
#endif
Main1.exe et Main2.exe créer un Mutex s'il n'est pas deja existant,
puis accèdent en lecture au fichier
setting.ini, ils y lise une valeur, qu'il vont incrémenter et écrire
dans le fichier setting, puis ils écrivent
dans le fichier Vérification une ligne du genre :
Client 1 Valeur : 15
cela signifie que le client 1 est venu lire la valeur 14 dans le
fichier setting, et l'a incrémenté.
Voici la config matériel :
sur PC1
Main1.exe
Main2.exe
Setting.txt
Verification.txt
sur PC2
un raccourcie de Main2.exe
je lance Main1 sur PC1
je lance Main2 sur PC2, mais il est exécuté dans l'environnement de
PC1
Ca veut dire quoi "dans l'environnement de PC1"? Tel que tu le décris, Main2
s'exécute sur PC2 (PC1 sert juste de serveur de fichiers).
et trés étrangement (mais heureusement rarement) j'obtiens ces choses
la :
Client 2 Valeur : 49
Client 2 Valeur : 50
Client 2 Valeur : 52
Client 1 Valeur : 51 // le 52 est venu avant le 51 :)
lors d'un autre test :
Client 2 Valeur : 21
Client 2 Valeur : 22
Client 2 Valeur : 22 // L'utilisation de mutex est justement
utilisée pour éviter
Client 1 Valeur : 23 // ce genre de problème :)
En réalité, les 2 programmes accèdent de manière concurrente au fichier,
avec en plus tout le mécanisme de cache réseau qui entre en jeu (comment
sont ouverts les différents fichiers? En accès exclusif?)
quelq'un a t'il déjà utilisés les mutex partagés entre deux PC ?
Encore une fois, ca n'existe pas! Comment fais tu (ou penses tu faire) pour
ouvrir depuis PC2 un mutex existant sur PC1 ?
vous avez des idées pour résoudre mon ptit problème ?
C'est quoi le but réel? Accéder de manière non concurrente à un seul fichier
depuis plusieurs PC?
le source peut
être mis à dispo si quelqu'un le veux
voila j'ai fait une expérience avec un mutex partagé entre deux PC
Ca n'existe pas les mutexs partagés entre PC! In mutex est local a une machine. Où as tu vu qu'il en était autrement?
PC1 et PC2 sont en réseau
Main1.exe et Main2.exe sont identique, la seule différence est celle_ci : #ifdef CLIENT1 fprintf(pFile,"Client 1 Valeur : %d n",iValue) ; #else fprintf(pFile,"Client 2 Valeur : %d n",iValue) ; #endif
Main1.exe et Main2.exe créer un Mutex s'il n'est pas deja existant, puis accèdent en lecture au fichier setting.ini, ils y lise une valeur, qu'il vont incrémenter et écrire dans le fichier setting, puis ils écrivent dans le fichier Vérification une ligne du genre :
Client 1 Valeur : 15
cela signifie que le client 1 est venu lire la valeur 14 dans le fichier setting, et l'a incrémenté.
Voici la config matériel :
sur PC1
Main1.exe Main2.exe Setting.txt Verification.txt
sur PC2
un raccourcie de Main2.exe
je lance Main1 sur PC1 je lance Main2 sur PC2, mais il est exécuté dans l'environnement de PC1
Ca veut dire quoi "dans l'environnement de PC1"? Tel que tu le décris, Main2 s'exécute sur PC2 (PC1 sert juste de serveur de fichiers).
et trés étrangement (mais heureusement rarement) j'obtiens ces choses la :
Client 2 Valeur : 49 Client 2 Valeur : 50 Client 2 Valeur : 52 Client 1 Valeur : 51 // le 52 est venu avant le 51 :)
lors d'un autre test :
Client 2 Valeur : 21 Client 2 Valeur : 22 Client 2 Valeur : 22 // L'utilisation de mutex est justement utilisée pour éviter Client 1 Valeur : 23 // ce genre de problème :)
En réalité, les 2 programmes accèdent de manière concurrente au fichier, avec en plus tout le mécanisme de cache réseau qui entre en jeu (comment sont ouverts les différents fichiers? En accès exclusif?)
quelq'un a t'il déjà utilisés les mutex partagés entre deux PC ?
Encore une fois, ca n'existe pas! Comment fais tu (ou penses tu faire) pour ouvrir depuis PC2 un mutex existant sur PC1 ?
vous avez des idées pour résoudre mon ptit problème ?
C'est quoi le but réel? Accéder de manière non concurrente à un seul fichier depuis plusieurs PC?
le source peut être mis à dispo si quelqu'un le veux
Tu peux le poster ici.
Arnaud
Patrick Philippot
Grégory Schulz wrote:
voila j'ai fait une expérience avec un mutex partagé entre deux PC
Comme Arnaud l'a dit, un mutex partagé en réseau, ça n'existe pas. Si vous voulez éviter une écriture simultanée sur un fichier réseau depuis plusieurs machines, utilisez simplement LockFileEx. Cette API asynchrone a le gros avantage de permettre la mise en attente du thread appelant et réclamant le lock jusqu'à ce que le lock soit accordé (en clair, jusqu'à ce que l'autre code utilisateur ait libéré le lock) ou qu'une erreur se produise. Si on y regarde bien, cela revient quasiment au même que si on utilisait un mutex.
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
Grégory Schulz wrote:
voila j'ai fait une expérience avec un mutex partagé entre deux PC
Comme Arnaud l'a dit, un mutex partagé en réseau, ça n'existe pas. Si
vous voulez éviter une écriture simultanée sur un fichier réseau depuis
plusieurs machines, utilisez simplement LockFileEx. Cette API asynchrone
a le gros avantage de permettre la mise en attente du thread appelant et
réclamant le lock jusqu'à ce que le lock soit accordé (en clair, jusqu'à
ce que l'autre code utilisateur ait libéré le lock) ou qu'une erreur se
produise. Si on y regarde bien, cela revient quasiment au même que si on
utilisait un mutex.
--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.xx
(remplacez .xx par .fr si vous répondez par e-mail)
voila j'ai fait une expérience avec un mutex partagé entre deux PC
Comme Arnaud l'a dit, un mutex partagé en réseau, ça n'existe pas. Si vous voulez éviter une écriture simultanée sur un fichier réseau depuis plusieurs machines, utilisez simplement LockFileEx. Cette API asynchrone a le gros avantage de permettre la mise en attente du thread appelant et réclamant le lock jusqu'à ce que le lock soit accordé (en clair, jusqu'à ce que l'autre code utilisateur ait libéré le lock) ou qu'une erreur se produise. Si on y regarde bien, cela revient quasiment au même que si on utilisait un mutex.
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
Grégory Schulz
Bonjour,
"Patrick Philippot" a écrit dans le message de news: 40a1c8ea$0$8645$
Grégory Schulz wrote: > voila j'ai fait une expérience avec un mutex partagé entre deux PC
Comme Arnaud l'a dit, un mutex partagé en réseau, ça n'existe pas. Si vous voulez éviter une écriture simultanée sur un fichier réseau depuis plusieurs machines, utilisez simplement LockFileEx. Cette API asynchrone a le gros avantage de permettre la mise en attente du thread appelant et réclamant le lock jusqu'à ce que le lock soit accordé (en clair, jusqu'à ce que l'autre code utilisateur ait libéré le lock) ou qu'une erreur se produise. Si on y regarde bien, cela revient quasiment au même que si on utilisait un mutex.
okok :) ca n'existe pas :)
Merci pour cette API je vais essayer de faire un test avec, en effet ca ressemble au mutex.
merci, bonne journé
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
Bonjour,
"Patrick Philippot" <patrick.philippot@mainsoft.xx> a écrit dans le message
de news: 40a1c8ea$0$8645$626a14ce@news.free.fr...
Grégory Schulz wrote:
> voila j'ai fait une expérience avec un mutex partagé entre deux PC
Comme Arnaud l'a dit, un mutex partagé en réseau, ça n'existe pas. Si
vous voulez éviter une écriture simultanée sur un fichier réseau depuis
plusieurs machines, utilisez simplement LockFileEx. Cette API asynchrone
a le gros avantage de permettre la mise en attente du thread appelant et
réclamant le lock jusqu'à ce que le lock soit accordé (en clair, jusqu'à
ce que l'autre code utilisateur ait libéré le lock) ou qu'une erreur se
produise. Si on y regarde bien, cela revient quasiment au même que si on
utilisait un mutex.
okok :) ca n'existe pas :)
Merci pour cette API je vais essayer de faire un test avec, en effet ca
ressemble au mutex.
merci, bonne journé
--
Patrick Philippot - Microsoft MVP [.Net]
MainSoft Consulting Services
www.mainsoft.xx
(remplacez .xx par .fr si vous répondez par e-mail)
"Patrick Philippot" a écrit dans le message de news: 40a1c8ea$0$8645$
Grégory Schulz wrote: > voila j'ai fait une expérience avec un mutex partagé entre deux PC
Comme Arnaud l'a dit, un mutex partagé en réseau, ça n'existe pas. Si vous voulez éviter une écriture simultanée sur un fichier réseau depuis plusieurs machines, utilisez simplement LockFileEx. Cette API asynchrone a le gros avantage de permettre la mise en attente du thread appelant et réclamant le lock jusqu'à ce que le lock soit accordé (en clair, jusqu'à ce que l'autre code utilisateur ait libéré le lock) ou qu'une erreur se produise. Si on y regarde bien, cela revient quasiment au même que si on utilisait un mutex.
okok :) ca n'existe pas :)
Merci pour cette API je vais essayer de faire un test avec, en effet ca ressemble au mutex.
merci, bonne journé
-- Patrick Philippot - Microsoft MVP [.Net] MainSoft Consulting Services www.mainsoft.xx (remplacez .xx par .fr si vous répondez par e-mail)
GG
> okok :) ca n'existe pas :)
Mutex = MUTuel EXclusion
Comment peut-on partager un objet qui réalise une exclusion mutuelle ? ;-)
-- Cordialement. GG.
> okok :) ca n'existe pas :)
Mutex = MUTuel EXclusion
Comment peut-on partager un objet qui réalise une exclusion mutuelle ? ;-)