IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Threads & Processus C++ Discussion :

multithreader un programme monothread


Sujet :

Threads & Processus C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut multithreader un programme monothread
    Bonjour,

    Voici ma problématique :

    J'ai un code monothread qui ecrit des fichiers. Jusqu'ici tout va bien.

    Or, j'ai besoin de pouvoir appeler cet exe plusieurs fois en meme temps...
    Du coup, sachant qu'il est fort probable que ma sortie soit la même dans certains cas, comment pourrais je assurer qu'ils écrivent bien un par un dans le meme fichier et que les autres attendent patiemment?

    Merci

    Vincent

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 449
    Par défaut
    Modifier les fonctions d'écriture du soft pour qu'il verrouille le fichier avant écriture et qu'il déverrouille le fichier après l'écriture.
    Les fonctionnalités lock/unlock existe dans quasiment tous les systèmes de fichiers modernes, il faut donc utiliser des librairies d'accès aux fichiers gérant cette fonctionnalité.
    Il faut aussi gérer l'échec de lock, mais la librairie d'accès peut gérer cela de manières transparentes.

    Je pense que des bibliothèques d'écriture "atomique" doivent être facilement trouvables dans votre contexte d'exécution. (Comme les librairies de log qui le font toutes).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut
    Bonjour,
    Merci pour ta réponse

    Je ne suis pas sûr de bien comprendre ta réponse ou de bien avoir exprimé mon souci.

    Mon programme P fait (en gros)
    - tester l'existence d'un fichier de lock.
    --> s'il existe, il s'endort un peu et retestera
    --> s'il n'existe pas, il le crée et bosse sur un vrai fichier correspondant au lock. Ensuite, il supprime le fichier de lock et les autres comprennent qu'ils peuvent bosser sur le fichier correspondant au lock

    Or, mon test de fichier n'est pas atomique car j'ai l'impression que cela ne servirai pas vu que P est monothread.
    Mais vu qu'une 20aine de P tourne en même temps, j'ai observé que le test d'existence du fichier de lock est, de temps en temps, vrai pour plusieurs P et qu'ils bossent tous en même temps sur une même sortie, ce qui n'est pas le but.

    Le hic est donc l'entrée simultanée. Si j'ai qu'un P qui valide le test, le fichier est locké et je suis tranquille.

    Merci

    Vincent

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 449
    Par défaut
    Heu, je n'est JAMAIS parlé d'un fichier "lock" qui errerait dans le système de fichier.
    J'ai parlé de verrouillage de fichier.
    Exemple sous Win32, voir les options dans les valeurs pour le 3ème paramètre de la fonction suivante :
    https://msdn.microsoft.com/fr-fr/lib...=vs.85%29.aspx

    De mémoire, il existe le même type de possibilité de verrouillage en POSIX, voir même un verrouillage par plage dans les offsets du fichier.


    Mais toutes les bibliothèques de Log font cela de manière transparente et portable.

Discussions similaires

  1. Programmation multithread pour débutant
    Par oodini dans le forum C++
    Réponses: 5
    Dernier message: 07/03/2008, 14h14
  2. programmation multithread en C++
    Par deadalnix dans le forum C++
    Réponses: 40
    Dernier message: 23/08/2007, 17h13
  3. temps d'execution d'un programme multithread
    Par La taupe dans le forum C
    Réponses: 2
    Dernier message: 10/01/2007, 17h44
  4. Programmation multithreads ?
    Par rulianf dans le forum C++
    Réponses: 2
    Dernier message: 03/02/2006, 20h17
  5. programmation d'API windows et multithreading
    Par Mastero dans le forum Windows
    Réponses: 8
    Dernier message: 07/03/2005, 23h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo