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

C++ Discussion :

Forcer la fin de l'execution d'une fonction


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut Forcer la fin de l'execution d'une fonction
    Bonjour!

    J'ai un petit probleme. J'ai 2 librairies de traitement d'image, qui doivent se passer une image. La technique la plus simple que j'ai trouvé, c'est d'obliger une a écrire dans un fichier tandis que l'autre va lire dedans juste apres, le tout dans une boucle quasi infinie. Le pb, c'est que des fois, une lit alors que l'autre efface tout et réécris, ce qui donne des erreurs pas sympa. (genre image qui saute, e ct) Existerais t'il un fonction qui permet de forcer le compilo a attendre que l'ecriture soit finie avant de réécrire, ou vice versa?

    Sinon, dans le pas de bol cas, existe t'il des sémaphores/mutex en C++? je vois plein de truc pr le C, mais pas vmt un truc pr le c++ ..

    Merci ^_^

  2. #2
    Membre chevronné Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Par défaut
    D'abord il faut savoir que les appels systèmes disponibles en C le sont également depuis le C++. Il est donc possible d'utiliser les sémaphore et les mutex en C++ exactement de la même façon que depuis le C.
    Si les librairies sont sous Windows, il est très simple d'utiliser un mutex pour lire / ou écrire dans le fichier voir :
    Exemple d'utilisation des Mutex chez Microsoft
    En résumé le principe est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CreateMutex(...) // Crée l'objet Mutex
    OpenMutex(...) // Ouvre l'objet Mutex déjà créé par l'autre
    //En boucle :
      WaitForSingleObject(hMutex, INFINITE) : attend que le fichier soit libre
      // Travaille dans le fichier
      ReleaseMutex(hMutex) : libère le fichier

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut
    Hélas, 3 fois hélas, je suis sous linux debian -_-' ... malheureusement pour moi.

    Y a l'équivalent simpliste sous le pingouin? parce que : #include <windows.h>, je crois que mon pc va me rire au nez ^_^

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Bien des bibliothèques existent pour le multithreading en C++.

    Boost.Thread fournit ce dont tu as besoin.

  5. #5
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    pthread_mutex_t avec #include <pthread.h>
    Source : http://emmanuel-delahaye.developpez.com/pthreads.htm (c'est du C,tu n'a que faire un wrapper)

    Sinon , y'a boost et pourquoi pas wxWidgets ou Qt
    Edit : Grilled
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  6. #6
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Citation Envoyé par Davidbrcz
    pthread_mutex_t avec #include <pthread.h>
    Source : http://emmanuel-delahaye.developpez.com/pthreads.htm
    C'est du C.

    Pour une gestion de tout cela en C++, il existe bien d'autres alternatives ( en réalité, pour la plupart, ce sont des wrappers de pthread d'une part pour les systèmes UNIX et des threads natifs windows pour ... windows

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par défaut
    oki merci, je vais regarder tout ca ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Forcer l'execution d'une fonction dans un thread
    Par greg2 dans le forum Threads & Processus
    Réponses: 3
    Dernier message: 24/11/2009, 14h34
  2. Savoir la fin d'execution d'une fonction asynchrone
    Par winnyzeboss1 dans le forum C++
    Réponses: 9
    Dernier message: 20/03/2009, 14h46
  3. [Prototype] Exécution d'une fonction à la fin du chargement de la page
    Par Herman dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 30/12/2008, 16h41
  4. Attendre la fin de l'execution d'une fonction
    Par metalcoyote dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 05/12/2008, 14h27
  5. Attendre la fin de l'execution d'une fonction
    Par Invité dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/04/2007, 10h33

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