Pagina 1 di 1

Problemi coi semafori

Inviato: lunedì 14 dicembre 2009, 23:00
da l4uk3
Ragazzi come mai questo codice non mi viene compilato?

Codice: Seleziona tutto

#include <stdio.h>
#include <malloc.h>
#include <pthread.h>
#include <semaphore.h>

//dichiaro qui sotto mutex e semafori
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;

sem_t semaforo_1;
sem_t semaforo_2;

sem_init(&semaforo_1,0,0);
sem_init(&semaforo_2,0,1);

void* funzioneThread1(void *parametro);
void* funzioneThread2(void *parametro);

int main() {
 pthread_t thread1, thread2;
 
 pthread_create(&thread1,NULL,&funzioneThread1,NULL);
 pthread_create(&thread2,NULL,&funzioneThread2,NULL);

 pthread_join(thread1,NULL);
 pthread_join(thread2,NULL);

 return 0;
}

void* funzioneThread1(void *parametro) { 
 while(1) {
  sem_wait(&semaforo_1);
  printf("sta lavorando il thread 1");
  sem_post(&semaforo_2);
 }
}

void* funzioneThread2(void *parametro) {
 while(1) {
  sem_wait(&semaforo_2);
  printf("sta lavorando il thread 2");
  sem_post(&semaforo_1);
 }
}
Mi sono rifatto ad un libro...ah per compilare ho usato la seguente riga

Codice: Seleziona tutto

gcc provaSemafori.c -o programma -lpthread
attendo risposte grazias mucio

Re: Problemi coi semafori

Inviato: lunedì 14 dicembre 2009, 23:02
da einstein1969
che errori ti da?

Re: Problemi coi semafori

Inviato: lunedì 14 dicembre 2009, 23:05
da l4uk3
questi

Codice: Seleziona tutto

provaSemafori.c:11: error: expected declaration specifiers or ‘...’ before ‘&’ token
provaSemafori.c:11: error: expected declaration specifiers or ‘...’ before numeric constant
provaSemafori.c:11: error: expected declaration specifiers or ‘...’ before numeric constant
provaSemafori.c:11: warning: data definition has no type or storage class
provaSemafori.c:12: error: expected declaration specifiers or ‘...’ before ‘&’ token
provaSemafori.c:12: error: expected declaration specifiers or ‘...’ before numeric constant
provaSemafori.c:12: error: expected declaration specifiers or ‘...’ before numeric constant
provaSemafori.c:12: warning: data definition has no type or storage class

Re: Problemi coi semafori

Inviato: lunedì 14 dicembre 2009, 23:18
da l4uk3
per favore ragazzi un aiutino...

Re: Problemi coi semafori

Inviato: martedì 15 dicembre 2009, 11:45
da IppatsuMan
(Nota a margine: non serve "bumpare" il proprio thread 13 minuti dopo aver aggiunto delle informazioni)

L'errore ti viene dato alle righe 11 e 12, che corrispondono a:

Codice: Seleziona tutto

sem_init(&semaforo_1,0,0);
sem_init(&semaforo_2,0,1);
Stai richiamando la funzione sem_init al di fuori del main o di qualunque altra funzione, e questo in C non è permesso. Sposta le inizializzazioni dei semafori all'interno del main.