AJUDA com o Geany! [RESOLVIDO]

1. AJUDA com o Geany! [RESOLVIDO]

Ellaine Silva
EllaineSilva

(usa Linux Mint)

Enviado em 07/12/2012 - 13:25h

Não consigo rodar o codigo... Ele compila mais não roda! Ajudapor favor!!!!

Esse éo codigo:

#include "stdio.h"
#include "unistd.h"
#include "stdlib.h"
#include "pthread.h"
#include "semaphore.h"

#define TRUE 1

sem_t mutex; /* controla o acesso a 'rc' */
sem_t db; /* controla o acesso a base de dados */
int rc = 0; /* número de processos lendo ou querendo ler */

void* reader(void *arg);
void* writer(void *arg);
void read_data_base();
void use_data_read();
void think_up_data();
void write_data_base();

int main() {
sem_init(&mutex, 0, 1);
sem_init(&db, 0, 1);

pthread_t r[3], w[2];

int i;

/* criando leitores */
for (i = 0; i < 3 ; i++) {
pthread_create(&r[i], NULL, reader, (void*) &i);
}

/* criando escritores */
for (i = 0; i< 2; i++) {
pthread_create(&w[i], NULL, writer, (void*) &i);
}

while(TRUE);
return 0;
}

void* reader(void *arg) {
int i = *((int *) arg);

while(TRUE) { /* repere para sempre */
sem_wait(&mutex); /* obtém acesso exclusivo à 'rc' */
rc = rc + 1; /* um leitor a mais agora */

if (rc == 1) { /* se este for o primeiro leitor... */
sem_wait(&db);
}

sem_post(&mutex); /* libera o acesso exclusivo a 'rc' */
read_data_base(i); /* acesso aos dados */
sem_wait(&mutex); /* obtém acesso exclusivo a 'rc' */
rc = rc - 1; /* um leitor a menos agora */

if (rc == 0) { /* se este for o último leitor */
sem_post(&db);
}

sem_post(&mutex); /* libera o acesso exclusivo a 'rc' */
use_data_read(i); /* região não crítica */
}
}

void* writer(void *arg) {
int i = *((int *) arg);

while(TRUE) { /* repete para sempre */
think_up_data(i); /* região não crítica */
sem_wait(&db); /* obtém acesso exclusivo */
write_data_base(i); /* atualiza os dados */
sem_post(&db); /* libera o acesso exclusivo */
}
}

void read_data_base(int i) {
printf("Reader %d estah lendo os dados!\n", i);
sleep( rand() % 5);
}

void use_data_read(int i) {
printf("Reader %d estah usando os dados lidos!\n", i);
sleep(rand() % 5);
}

void think_up_data(int i) {
printf("Writer %d estah pensando no que escrever!\n", i);
sleep(rand() % 5);
}

void write_data_base(int i) {
printf("Writer %d estah escrevendo os dados!\n", i);
sleep( rand() % 5);
}



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts