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

  FORUM HardWare.fr
  Programmation
  C

  [C] creation de threads ou de processus ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] creation de threads ou de processus ?

n°790135
wixiz
Posté le 08-07-2004 à 12:26:35  profilanswer
 

Bon, je maitrise pas trop encore la gestion des thread et des processus, mais je me pose une question.
Assez souvent en C on cree des processus fils avec fork(), par ex sous la forme
pid = fork()
if(pid==0) { processus fils qui prend du tps...}
 
Tout ca c'est assez clair et ca parait tres bien, mais j'ai vu aussi qu'il y a la classe pthread qui permet elle de creer des threads (donc plus "leger" a l'execution normalement) et tout...
 
ALors dans quel cas on utilise koi? comment savoir si c mieux un fork ou la creation d'une thread en fonction de ce qy'on doit faire ?
 
Merci pour vos reponses

mood
Publicité
Posté le 08-07-2004 à 12:26:35  profilanswer
 

n°790251
printf
Baston !
Posté le 08-07-2004 à 14:08:59  profilanswer
 

Les threads c'est pratique, tu peux utiliser des variables globales [:spamafote]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[:dehors]
 
EDIT : sans mutex bien entendu :D
Pour répondre à ta question, les threads sont plus légers se partagent le même espace d'adressage. A moins de vouloir éviter de partager l'espace d'adressage (pour des raisons de sécurité), je ne vois pas trop l'intérêt de forker. Enfin, c'est juste mon avis, et je suis tout sauf un expert sur la question [:spamafote]


Message édité par printf le 08-07-2004 à 14:14:31

---------------
Un matin je me lèverai et il fera beau.
n°790409
HelloWorld
Salut tout le monde!
Posté le 08-07-2004 à 15:15:29  profilanswer
 

Au commencement y'avait les processus, et fork était là faute de mieux. Puis vinrent les thread, et fork resta utilisé par fainéantise des programmeurs, et des profs aussi.
Les thread c'est bon mangez en!


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°790428
destynov@
Posté le 08-07-2004 à 15:25:14  profilanswer
 

ouais mais les threads ce n'est quand même pas évident! perso, bon c'est vrai que je débute dans la prog, dès que je px j'utilise un petit timer qui est fait en 2 lignes =). je développe surtout pour des appli qui fonctionne ac du matériel tel que des balances ou des douchettes, dc je px éviter le multitache. ms bon, faudra bien que je m'y mette un jour :-(

n°790552
wixiz
Posté le 08-07-2004 à 16:37:49  profilanswer
 

ok, donc si on resume, vieut vaut utiliser les threads parce que :
 - un gros avantage : bcp plus leger (donc chgt de contexte et tout vachement rapide)
 - pas vraiment d'inconvenients...
 
ca parait correct ?? Vive les threads alors !   :whistle:

n°790556
G0ose
pthread_mutex_lock(&Trolls);
Posté le 08-07-2004 à 16:39:54  profilanswer
 

y dit qu'il voit pas le rapport entre des "des balances ou des douchettes" et les fork()  :heink:  ...
 
Ha si je crois avoir compris, enfait c'est implicite comme raisonnement:
 

Code :
  1. int tube[2];
  2. if ( pipe(tube) != 0) {exit(1);}


 
héhé des tube && des pipes, ca C pour les douchettes  :sol:  
 
===========ok ok je suis deja dehors=======>[ ]

n°790619
HelloWorld
Salut tout le monde!
Posté le 08-07-2004 à 17:13:01  profilanswer
 

moi j'ai rien compris à ce qu'il a dit.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°790640
wixiz
Posté le 08-07-2004 à 17:22:23  profilanswer
 

moi non plus  :sarcastic:

n°790770
printf
Baston !
Posté le 08-07-2004 à 20:11:28  profilanswer
 

Il développe des systèmes embarqués.
 
 
(ce qui est en soi un label de qualité, soit dit en passant :D).


---------------
Un matin je me lèverai et il fera beau.
n°790798
matafan
Posté le 08-07-2004 à 21:14:17  profilanswer
 

Citation :

fork resta utilisé par fainéantise des programmeurs, et des profs aussi


 
Mais bien sur. T'en as d'autres des comme ca ?

mood
Publicité
Posté le 08-07-2004 à 21:14:17  profilanswer
 

n°791249
HelloWorld
Salut tout le monde!
Posté le 09-07-2004 à 10:33:37  profilanswer
 

ouai :
les thread ne sont pas utilisés par fainéantise des programmeurs et des profs aussi.
Tu m'as l'air calé sur la question, alors peut être vas-tu enfin me faire comprendre pourquoi on utilise encore fork aujourd'hui ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°791283
G0ose
pthread_mutex_lock(&Trolls);
Posté le 09-07-2004 à 10:59:21  profilanswer
 

Une chose est sur c'est que le fork reste ULTRA simple à utiliser meme si toute la gestion des IPC est un peu lourde.

n°791288
masklinn
í dag viðrar vel til loftárása
Posté le 09-07-2004 à 11:01:35  profilanswer
 

G0ose a écrit :

Une chose est sur c'est que le fork reste ULTRA simple à utiliser


C'est exactement ce que dit HelloWorld :)

n°791559
HelloWorld
Salut tout le monde!
Posté le 09-07-2004 à 14:32:02  profilanswer
 

G0ose a écrit :

Une chose est sur c'est que le fork reste ULTRA simple à utiliser meme si toute la gestion des IPC est un peu lourde.


Et créer un thread c'est ultra compliqué ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°791841
blackgodde​ss
vive le troll !
Posté le 09-07-2004 à 17:11:19  profilanswer
 

c ptetre la fermeture du programme, sans fracasser tout les threads secondaires qui est un peu plus problématique ?


---------------
-( BlackGoddess )-
n°791871
masklinn
í dag viðrar vel til loftárása
Posté le 09-07-2004 à 17:30:55  profilanswer
 

si les threads sont bien codés ca ne pose aucun probleme [:itm]


Message édité par masklinn le 09-07-2004 à 17:31:09

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°791905
HelloWorld
Salut tout le monde!
Posté le 09-07-2004 à 17:47:39  profilanswer
 

BlackGoddess a écrit :

c ptetre la fermeture du programme, sans fracasser tout les threads secondaires qui est un peu plus problématique ?


En quoi c'est différent avec les processus ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°791970
blackgodde​ss
vive le troll !
Posté le 09-07-2004 à 19:01:10  profilanswer
 

tous les processus fils d'un processus sont détruits qd le père l'est ?
(je connais pas trop la hierarchie de processus unix)


---------------
-( BlackGoddess )-
n°792254
HelloWorld
Salut tout le monde!
Posté le 10-07-2004 à 01:34:39  profilanswer
 

Ca dépend des UNIX...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°792268
matafan
Posté le 10-07-2004 à 03:16:41  profilanswer
 

HelloWorld : est-ce que tu réalises que sans fork() tu n'aurais qu'un seul processus, init ? Lancer un programe, c'est faire un fork/exec.
 
Sinon non, les processus fils ne sont pas détruits quand le père l'est. Ils sont ratachés à init.


Message édité par matafan le 10-07-2004 à 03:17:42
n°792537
HelloWorld
Salut tout le monde!
Posté le 10-07-2004 à 15:53:30  profilanswer
 

matafan a écrit :

HelloWorld : est-ce que tu réalises que sans fork() tu n'aurais qu'un seul processus, init ? Lancer un programe, c'est faire un fork/exec.


Est-ce que tu réalises qu'on parle de l'utilisation du multiprocess là où le multithread convienfrait mieux ?
Je critique pas l'utilisation de fork pour créer un process, mais la création d'un process (au moyen de fork) là où un thread serait mieux adapté.

matafan a écrit :

Sinon non, les processus fils ne sont pas détruits quand le père l'est. Ils sont ratachés à init.


A quoi sert la commande nohup alors ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°792575
el muchach​o
Comfortably Numb
Posté le 10-07-2004 à 17:29:33  profilanswer
 

wixiz a écrit :

ok, donc si on resume, vieut vaut utiliser les threads parce que :
 - un gros avantage : bcp plus leger (donc chgt de contexte et tout vachement rapide)
 - pas vraiment d'inconvenients...
 
ca parait correct ?? Vive les threads alors !   :whistle:


 
C'est surtout que les threads partagent le même espace d'adressage, c'est là que réside en pratique la différence fondamentale / process -> pas besoin de communication interprocess, mais par contre, il faut gérer des mutex et éviter qu'ils soient bloquants.
 
http://www.codeproject.com/threads/


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°793567
HelloWorld
Salut tout le monde!
Posté le 12-07-2004 à 14:21:33  profilanswer
 

el muchacho a écrit :

C'est surtout que les threads partagent le même espace d'adressage, c'est là que réside en pratique la différence fondamentale / process -> pas besoin de communication interprocess, mais par contre, il faut gérer des mutex et éviter qu'ils soient bloquants.
 
http://www.codeproject.com/threads/


Eviter qu'un mutex soit bloquant, tu fais pas grand chose avec alors ;)
Même pour la synchronisation c'est plus performant avec les thread grâce aux sections critiques.
http://support.microsoft.com/defau [...] -us;105678


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°794241
el muchach​o
Comfortably Numb
Posté le 13-07-2004 à 09:37:10  profilanswer
 

Oui, je voulais dire en blocage mutuel oeuf corse. ;)
Et comme tu dis, les threads c'est nettement plus performant.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°794251
Joel F
Real men use unique_ptr
Posté le 13-07-2004 à 09:47:09  profilanswer
 

www.boost.org
 
BOOST::THREAD et c fini.

n°794527
SoWhatIn22
Posté le 13-07-2004 à 12:00:17  profilanswer
 

Joel F a écrit :

BOOST::THREAD et c fini.


vas dire ça à un compilo C. on n'est pas chez les c++ ici.

n°794544
HelloWorld
Salut tout le monde!
Posté le 13-07-2004 à 12:10:20  profilanswer
 

Savez-vous si on peut faire des sections critiques sous Linux et si oui comment ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°795101
el muchach​o
Comfortably Numb
Posté le 13-07-2004 à 18:05:40  profilanswer
 

Avec LinuxThreads, par exemple.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°795156
HelloWorld
Salut tout le monde!
Posté le 13-07-2004 à 18:55:43  profilanswer
 

En fait je cherche si y'a un équivalent de EnterCriticalSection.
http://msdn.microsoft.com/library/ [...] ection.asp
Il me semble qu'il y en a un depuis pas trop longtemps, mais je crois que ça porte un autre nom.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°795962
matafan
Posté le 15-07-2004 à 04:05:03  profilanswer
 

HelloWorld : comme son nom l'indique, nohup sert a bloquer les SIGHUP. Quand un process termine, un SIGHUP et un SIGCONT sont envoyés aux processus fils.
 
Donc non, terminer un processus ne détruit pas ses processus fils. Ca leur envoie seulement ces deux signaux, qu'ils sont libres de traiter comme ils l'entendent, y compris en terminant eux-même (ce qui est l'action par défaut de SIGHUP). S'ils en font autre chose, ils sont rattachés à init.

n°796038
HelloWorld
Salut tout le monde!
Posté le 15-07-2004 à 09:43:45  profilanswer
 

Dans le détail tu as raison, mais vu de haut c'est pareil : quand le père se termine le fils reçoit un signal qui par défaut (et donc la plupart du temps) provoque sa mort.
Résultat : quand le père meurt, ses fils aussi. C'est le comportement par défaut et j'aurais tendance à dire le comportement conseillé, vu qu'on laisse l'utilisateur choisir (=> nohup).
Mais j'aurais une question : est-ce que tous les UNIX se comportent ainsi ? Car je me souviens de tp de réseaux sous HP-UNIX où on nous gueulait dessus parce que y'avait plein de process zombi (tuer le serveur ne tuait pas les process clients).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le   profilanswer
 


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

  [C] creation de threads ou de processus ?

 

Sujets relatifs
[VBA] Urgent. lecture d'un répertoire ordonée par date de création duSynchronisation de threads en C#
Création d'imageassocier une action lors de la creation de boutons
création d'un menu sous DOS avec win XPpetite question sur les threads
problème avec les threadsproblèmes de Threads .
[C] Bidouillage avec des threads....Création base de données depuis procédure stockées
Plus de sujets relatifs à : [C] creation de threads ou de processus ?


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