Perm(semaphore) et sub
maglo
Messages postés
4
Statut
Membre
-
maglo Messages postés 4 Statut Membre -
maglo Messages postés 4 Statut Membre -
Bonjour a Tous
je debute avec PERL j'essaye de faire tourner deux sub, a tour de role, j'ai cree un Threads pour que les sub ce partage la ressource et tourne chacun son tour, mais lorsque je compile ca marche pas. lA QUESTION QUE JE ME POSE FAUT'il absolument avoir un "main" ou juste des sub suffissent pour faire rouler le programme. Je debute donc merci de votre aide et indulgence.
use threads;
sub jeton {2; }
sub_part1{
sub good_part1{ $thr1 = threads->new(\&jeton);
}
sub_part2{
sub good_part2{ $thr2 = threads->new(\&jeton);
}
je debute avec PERL j'essaye de faire tourner deux sub, a tour de role, j'ai cree un Threads pour que les sub ce partage la ressource et tourne chacun son tour, mais lorsque je compile ca marche pas. lA QUESTION QUE JE ME POSE FAUT'il absolument avoir un "main" ou juste des sub suffissent pour faire rouler le programme. Je debute donc merci de votre aide et indulgence.
use threads;
sub jeton {2; }
sub_part1{
sub good_part1{ $thr1 = threads->new(\&jeton);
}
sub_part2{
sub good_part2{ $thr2 = threads->new(\&jeton);
}
A voir également:
- Perm(semaphore) et sub
- Move your sub - Télécharger - Sous-titres
- Comment ouvrir un fichier .sub - Forum TV & Vidéo
- Branchement sub double bobine 2x2 ohm ✓ - Forum Autoradio
- D sub out of range 67.5 khz 60hz ✓ - Forum Ecran
- SOS écran bleu "out of range H:75KHZ V :60HZ ✓ - Forum Windows
3 réponses
Bonjour,
Qu'est-ce qui "ne marche pas" ? la compil ou le programme compilé ?
Sinon :
- pour accéder à une ressource "chacun son tour", il ne faut pas faire de threads, parce qu'une thread peut prendre la ressource deux fois de suite, et même plus,... sauf si on gère le tour de rôle, mais avec une thread c'est tellement plus facile.
- le programme se termine quand le main se termine, donc si le main n'attend pas la fin des threads qu'il a lancés, ceux-ci sont "tués" même s'ils n'ont pas eu le temps de travailler.
Manu
lorsque je compile ca marche pas
Qu'est-ce qui "ne marche pas" ? la compil ou le programme compilé ?
Sinon :
- pour accéder à une ressource "chacun son tour", il ne faut pas faire de threads, parce qu'une thread peut prendre la ressource deux fois de suite, et même plus,... sauf si on gère le tour de rôle, mais avec une thread c'est tellement plus facile.
- le programme se termine quand le main se termine, donc si le main n'attend pas la fin des threads qu'il a lancés, ceux-ci sont "tués" même s'ils n'ont pas eu le temps de travailler.
Manu
Bonjour,
Je vois que vous avez lancé un deuxième thread plus explicite sur votre problème....
Ce qui vous manque c'est un contrôle d'accès à votre ressource. Il faut poser un verrou en entrant et déverrouiller en sortant. Sous Linux, on utilise souvent un fichier à cette fin : si le fichier existe c'est que la ressource est occupée, et il faut alors attendre qu'il ait été supprimé.
Manu
Je vois que vous avez lancé un deuxième thread plus explicite sur votre problème....
Ce qui vous manque c'est un contrôle d'accès à votre ressource. Il faut poser un verrou en entrant et déverrouiller en sortant. Sous Linux, on utilise souvent un fichier à cette fin : si le fichier existe c'est que la ressource est occupée, et il faut alors attendre qu'il ait été supprimé.
Manu
merci pour ta reponse Manu
en effet j'essaye de gere un tour de role justement, en fait ca ne marche pas car chaque fois qu'un sub a le thread il est censé incrementé un compteur (competeur qui est imprimer dans un fichier). sauf que ce compteur reste a 0.
$thr2 = threads->new(\&jeton, print OUTFILE (compteur[$t+1]=compteur[$t+1] + 1));
en effet j'essaye de gere un tour de role justement, en fait ca ne marche pas car chaque fois qu'un sub a le thread il est censé incrementé un compteur (competeur qui est imprimer dans un fichier). sauf que ce compteur reste a 0.
$thr2 = threads->new(\&jeton, print OUTFILE (compteur[$t+1]=compteur[$t+1] + 1));