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

  FORUM HardWare.fr
  Programmation
  Algo

  [MUTEX] difference entre ce bout de code et un mutex

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MUTEX] difference entre ce bout de code et un mutex

n°163613
koulip31
Posté le 21-06-2002 à 18:00:49  profilanswer
 

#define TEST              123
#define DEBLOQUE 124
#define BLOQUE       125
 
int x_freeze(int q)
{
  static int etat = DEBLOQUE;
   
  if(q == TEST && etat == BLOQUE)
    return(BLOQUE);
  else if(q == TEST && etat == DEBLOQUE)
    return(DEBLOQUE);
  else if(q == BLOQUE || q == DEBLOQUE)
    {
      etat = q;
      return(OK);
    }
  return(ERROR);  
}
 
pour bloquer mq thread j'utilise ce morceau de code au lieu d'un mutex
en gros ca donne ca
 
 while(x_freeze(TEST) == BLOQUE);
  x_freeze(BLOQUE);
 traite();
  x_freeze(DEBLOQUE);
 
utiliser cela a la place d'un mutex peut il engendrer un pb ??? (si oui pkoi?)
reelement que se cache t'il derriere un mutex  ??


---------------
télétunestel ouimélétuness sitélétunes mélétunetron [:koulip31] [:suri]
mood
Publicité
Posté le 21-06-2002 à 18:00:49  profilanswer
 

n°163620
Jar Jar
Intaigriste
Posté le 21-06-2002 à 18:08:33  profilanswer
 

Réfléchis 5 minutes. Si tu as un changement de contexte entre ces deux lignes :
 
while(x_freeze(TEST) == BLOQUE);
x_freeze(BLOQUE);  
 
... deux threads à la fois peuvent lancer traite(), et tu l'as dans le fion.
 
 
Les mutex utilisent les fonctions atomiques du processeur. Comme un changement de contexte peut avoir lieu absolument n'importe quand, il faut utiliser les fonctions atomiques du processeur. C'est pour ça qu'on a implémenté la fonction dite test_and_set dans les processeurs, qui modifie le contenu d'un mot ET retourne son ancienne valeur, en une instruction.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°163683
koulip31
Posté le 21-06-2002 à 22:53:58  profilanswer
 

Jar Jar a écrit a écrit :

Réfléchis 5 minutes. Si tu as un changement de contexte entre ces deux lignes :
 
while(x_freeze(TEST) == BLOQUE);
x_freeze(BLOQUE);  
 
... deux threads à la fois peuvent lancer traite(), et tu l'as dans le fion.
 
 
Les mutex utilisent les fonctions atomiques du processeur. Comme un changement de contexte peut avoir lieu absolument n'importe quand, il faut utiliser les fonctions atomiques du processeur. C'est pour ça qu'on a implémenté la fonction dite test_and_set dans les processeurs, qui modifie le contenu d'un mot ET retourne son ancienne valeur, en une instruction.  




 
escuse moi mon ignorance  
mais qu'est ce que c'est un changement de contexte ????  
 
a part : pour les mutex leur nombres sont il limités ?? ou on peut en mettre autant sue je veux ???

n°163688
Requin
Posté le 21-06-2002 à 23:28:03  profilanswer
 

Un changment de contexte, c'est quand le processeur passe d'un thread à un autre (chaque thread est traité en réalité séquentiellement sur un monoprocesseur) et tu n'as aucun moyen avec un OS multitâche préemptif de savoir quand il va être supsendu pour qu'un autre thread puisse être executé.
 
Un mutex évite par exemple le problème susmentionné, quant aux limitations je ne les connais pas

n°163751
koulip31
Posté le 22-06-2002 à 11:29:14  profilanswer
 

merci de ces explications ..
maintenant je capiche mieux le pourquoi de choses  
 :)


---------------
télétunestel ouimélétuness sitélétunes mélétunetron [:koulip31] [:suri]
n°163799
Jar Jar
Intaigriste
Posté le 22-06-2002 à 14:58:07  profilanswer
 

Non, les mutex ne sont pas limités, pas plus que les sémaphores. Tu peux créer des objets pthread_mutex_t ou sem_t à volonté.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°163809
bjone
Insert booze to continue
Posté le 22-06-2002 à 15:57:46  profilanswer
 

Jar Jar a écrit a écrit :

Non, les mutex ne sont pas limités, pas plus que les sémaphores. Tu peux créer des objets pthread_mutex_t ou sem_t à volonté.  




 
ouais enfin tant que t'as de la ram et du swap pour les ressources du noyau de l'os... :D


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

  [MUTEX] difference entre ce bout de code et un mutex

 

Sujets relatifs
pb avec mon code!!!![SGBD] Sybase, récuperer le code d'une sp ...
difference entre un include cote serveur et link pour un fichier js??[C++] Encapsuler du code Win32 dans un dialog MFC ?
[JAVASCRIPT] comme mettre un code html en javascript ?[Java] obtenir le code ASCII d'un caractère
[Javascript & PHP ] Fermer une fenetre au bout d'un temps donnéRecuperer le code source ?
mise en page du code javaPasser ce code C en pascal...
Plus de sujets relatifs à : [MUTEX] difference entre ce bout de code et un mutex


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