Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //ESERCIZIO TIMER MARCO ANDRONACO
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <pthread.h>
- #include <sys/types.h>
- //pthread_mutex_t mutex;
- int attivo = 0;
- void * gestore_thread(void * argomento);
- int main(void){
- pthread_t thread;
- int run = 1, scelta, S, res;
- printf("Benvenuto nel mio programma timer con thread.\n");
- do {
- printf("\n1. Start\n");
- printf("2. Stop\n");
- printf("0. Quit\n");
- printf("\nCosa vuoi fare? ");
- scanf("%d", &scelta);
- switch(scelta){
- case 1: //start
- if (!attivo) {
- printf("Ok, di quanti secondi devo impostare il timer? ");
- scanf("%d", &S);
- res = pthread_create(&thread, NULL, gestore_thread, (void *)S);
- if(res){
- puts("Errore nella pthread_create!!");
- exit(EXIT_FAILURE);
- }
- attivo = 1;
- } else
- printf("C'e' gia' un timer attivo.\n");
- break;
- case 2: //stop
- if (attivo) {
- //cancella il thread
- res = pthread_cancel(thread);
- if(res){
- puts("Errore nella pthread_cancel!!");
- exit(EXIT_FAILURE);
- }
- pthread_join(thread, NULL);
- attivo = 0;
- printf("Timer interrotto.\n");
- } else
- printf("Magari prima imposta un timer.\n");
- break;
- case 0: //quit
- if (attivo) {
- //cancella il thread
- res = pthread_cancel(thread);
- if(res){
- puts("Errore nella pthread_cancel!!");
- exit(EXIT_FAILURE);
- }
- pthread_join(thread, NULL);
- }
- run = 0;
- break;
- default:
- puts("You had one fucking job. Inserisci 1, 2 o 0, non e' tanto difficile.");
- }
- } while (run);
- puts("Arrivederci!");
- exit(EXIT_SUCCESS);
- }
- void * gestore_thread(void * argomento){
- printf("\nSono il secondo thread. Ho impostato il timer a %d secondi.", (int)argomento);
- fflush(stdout);
- sleep((int)argomento);
- attivo = 0;
- puts("\aTimer scaduto!!!");
- pthread_exit(NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement