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;
}
示例#3
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;
}