bonjour,
Voila mon probleme :
je crée deux threads et je voudrais que l'un puisse stopper l'autre avant la fin de son execution. Je m'explique :
- thread 1 : for (int c=0; c < 10; ++c)
- thread 2 : doit stopper le thread 1 quand c=5
Avec mon code, le thread1 tourne jusqu'a son pthread_exit et après le thread2 demarre, maisnormalement 2threads devraient s'executer en "meme temps" donc je capte pas.
Si quelqu'un sait comment faire, ca serait cool.
voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <stdio.h> #include <stdlib.h> #include "pthread.h" void *f (void *arg); void *test (void *arg); int cpt=0; pthread_mutex_t mutex; pthread_t thread1, thread2; int main () { pthread_mutex_init(&mutex, NULL); pthread_create(&thread1,NULL,f,(void *)"t1"); pthread_create(&thread2,NULL,test,(void *)"t2"); pthread_mutex_destroy(&mutex); return 0; } void *f (void *arg) { bool encore=true; while (encore) { pthread_mutex_lock(&mutex); cpt++; if (cpt == 10) encore=false; pthread_mutex_unlock(&mutex); } pthread_exit(0); } void *stop (void *arg) { bool cancel=false; while (!cancel) { pthread_mutex_lock(&mutex); if (cpt < 5) { cancel=true; printf("On arrete le thread 1\n"); pthread_cancel(thread1); } pthread_mutex_unlock(&mutex); } pthread_exit(0); }
Partager