void * fonc_thread1 (void* arg) //La fonction qu'on donne au thread 1, utilisé pour les tests { int abo_retour, desabo_retour, send_retour, fin_retour; pthread_t idThread; char rcv_retour[100]; sleep(1); abo_retour = aboMsg(pthread_self()); printf("Abo_retour : %d\n", abo_retour); idThread = pthread_self(); printf("thread 1 : %d\n", idThread); sleep(2); //send_retour = sendMsg(pthread_self(), pthread_self(), "Coucou"); //sendMsg(pthread_self(), pthread_self(), "Djibrilla"); //printf("Send retour = %d\n", send_retour); //sleep(2); //strncpy(rcv_retour, rcvMsg(pthread_self(), 2), 100); //printf("Thread 1 msg recu : %s\n", rcv_retour); //desabo_retour = desaboMsg(pthread_self()); //printf("thread 1 desabo : %d\n", desabo_retour); fin_retour = finMsg(1); printf("thread 1 finMsg : %d\n", fin_retour); return 0; }
int main() //Un main de test, exemple qu'un utilisateur pourrait effectuer { pthread_t thread1, thread2; int init_retour, fin_retour; init_retour = initMsg(3,50,50); printf("***main***\n"); if(pthread_create(&thread1, NULL, fonc_thread1, NULL) != 0) { printf("Creation thread 1"); return 1; } if(pthread_create(&thread2, NULL, fonc_thread2, NULL) != 0) { printf("Creation thread 2"); return 1; } pthread_join(thread1, NULL); pthread_join(thread2, NULL); pthread_join(id_gestionnaire, NULL); fin_retour = finMsg(0); /*msgctl(tab_abonnes[0].id_file_desc,IPC_RMID,NULL); msgctl(tab_abonnes[1].id_file_desc,IPC_RMID,NULL); msgctl(id_file_montante, IPC_RMID,NULL);*/ printf("Tout s'est bien passé\n"); return 0; }
int main (void) { pthread_t idThreadEcriture, idThreadAffichage, idThreadSupervision; /*Déclaration des ID de threads*/ initMsg(2); if (pthread_create(&idThreadAffichage, NULL, affichage, NULL) != 0){ /*Création du thread d'affichage*/ printf("Erreur Création thread d'affichage\n"); exit(1); } if (pthread_create(&idThreadEcriture, NULL, ecriture, NULL) != 0){ /*Création du thread d'écriture*/ printf("Erreur Création thread d'écriture\n"); exit(1); } if (pthread_create(&idThreadSupervision, NULL, Supervision, NULL) != 0){ /*Création de la tâche de supervision*/ printf("Erreur création thread de supervision\n"); exit(1); } pthread_join(idThreadEcriture, NULL); /*On attend que les threads se terminent*/ pthread_join(idThreadAffichage, NULL); pthread_join(idThreadSupervision, NULL); finMsg(0); printf("Fin main\n"); return 0; }