Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1495 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Accès concurrents au disque

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Accès concurrents au disque

n°1880086
GeneralKon​ig
Posté le 01-05-2009 à 17:42:51  profilanswer
 

Bonjour,
 
je développe un projet qui utilise des threads. Chaque thread fait des accès disques (création de fichiers, dossiers, etc...).
J'aimerai donc savoir comment sont gérés ces accès concurrents. Est-ce à moi de gérer cette concurrence ou est-ce pris en charge par le système d'exploitation (si oui, tous les OS fonctionnent-ils de la même façon ?)
 
Merci

mood
Publicité
Posté le 01-05-2009 à 17:42:51  profilanswer
 

n°1880135
billgatesa​nonym
Posté le 01-05-2009 à 22:55:38  profilanswer
 

La fonction standard fopen() n'a malheureusement pas de paramètre pour la gestion des accès conncurrents.
C'est pour cette raison, que, sous Windows, il y a l'API CreateFile(), voir http://bob.developpez.com/tutapiwin/article_40.php .
Pour les autres OS, je ne sais pas.

n°1880136
Lightness1​024
Posté le 01-05-2009 à 22:56:40  profilanswer
 

non, tous les OS ne réagissent pas pareil. déjà cela dépend beaucoup du mode d'ouverture (ecriture, lecture, combiné, append...).
si je me souvient bien mes TP unix, deux fichiers peuvent etre ouverts de maniere concurrents en ecriture, l'ordre d'ecriture n'est simplement pas garanti.
en lecture, je ne pense pas que ca ne pose de probleme.
attention, l'api windows permet l'exclusion dans certains modes (bloquer un acces) ca peut causer de graves ralentissements/dead locks. (voir tortoise SVN.....)
si tu accèdes a des fichiers differents par contre aucun probleme non plus.
sous linux par exemple, rien ne passera vraiment dans les cables ATA avant au moins 30 secondes d'inactivité (commande sync automatique).
donc pas de prob de perfs.
 


---------------
http://projets.6mablog.com/
n°1880137
GeneralKon​ig
Posté le 01-05-2009 à 23:18:28  profilanswer
 

Ok merci
 
En fait je travaille avec Boost.Filesystem pour écrire mes fichiers
Et tous les threads travaillent sur des fichiers différents. Par contre il se peut qu'ils doivent créer un même dossier, et dans ce cas je me demande ce qu'il se passerait.
 
On m'a aussi dit que ça pourrait faire se balader la tête de lecture du disque sans arrêt, et que ça serait pas trop bon. Qu'est-ce que vous en pensez ?

n°1880144
Lightness1​024
Posté le 02-05-2009 à 02:24:40  profilanswer
 

j'ai envie de dire que c'est vraiment bête de s'en préoccuper.
tout va se passer en mémoire de toute facon. et si un jour ton OS décide de streamer ca au disque, il aura déja tout organiser par paquet ecrivables en sequence, le tout encore plus réorganisé par le native command queuing si l'os etait pas assez au courant de la disposition physique.
 
pour les dossiers, l'os va faire des synchro si tu veux en créer un qui existe déja il te signalera une erreur.


---------------
http://projets.6mablog.com/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Accès concurrents au disque

 

Sujets relatifs
accés aux variablesFlash - code d'accès par XML
Protéger l'accès à un fichier JSVotre avis sur ce code de restriction d'accès
Créer des accès sur un site[Réglé]Test à l'accès d'un fichier (savoir s'il est déjà ouvert)
recupérer mot de passe compte pour montage disqueQuelle est la commande .bat qui récupère la taille d'un disque dur ?
Interdire Accès selon le Rôleconnexion ado avec acces et besoin d'aide pour code vb svp
Plus de sujets relatifs à : Accès concurrents au disque


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR