TECNOLOGIA
Por: anagil • 10/6/2015 • Trabalho acadêmico • 473 Palavras (2 Páginas) • 254 Visualizações
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h> // Para utilizar a função sleep
#include <time.h> // Para trabalhar com data e hora
#include <string.h>
#include <stdbool.h>
#define max 1000
#define threads 50
// Declaração da variável de condição
pthread_mutex_t mutex;
// Declaração das variáveis para pegar
// a data/hora do computador
time_t hora_ini, hora_fim;
int count = -1;
struct Pedido {
double codigo;
char descricao[1001];
} pedidos[max];
void consumidor(int id)
{
int aguardar;
time_t t_ini, t_fim;
time(&hora_ini);
//printf("\nInicio Consumidor %d", id);
while(true) {
// retira item da fila
do {
pthread_mutex_lock(&mutex);
aguardar = false;
count++;
if (count >= max) {
aguardar = true;
time(&hora_fim);
printf("\nConsumidor %d Intervalo de tempo: %f seg.",id, difftime(hora_fim, hora_ini));
pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}
} while(aguardar == true);
pthread_mutex_unlock(&mutex);
// Mostra o item na tela
//printf("\nConsumidor %d consumiu o item %g", id, pedidos[count].codigo);
usleep(1000);
}
}
int main(int argc, char *argv[]) {
int i;
pthread_t cons[threads];
//preencher vetor pedidos
for(i=0;i<max;i++)
{
pedidos[i].codigo = (i+1);
strcpy(pedidos[i].descricao, "Descricao do pedido: ");
}
pthread_mutex_init(&mutex,NULL);
for(i=0;i<threads;i++)
{
pthread_create(&cons[i],NULL,(void *)consumidor,(i+1));
}
getch();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h> // Para utilizar a função sleep
#include <time.h> // Para trabalhar com data e hora
#include <string.h>
#include <stdbool.h>
#define max 1000
#define threads 50
// Declaração da variável de condição
pthread_mutex_t mutex;
// Declaração das variáveis para pegar
// a data/hora do computador
time_t hora_ini, hora_fim;
int count = -1;
struct Pedido {
double codigo;
char descricao[1001];
} pedidos[max];
void consumidor(int id)
{
int aguardar;
time_t t_ini, t_fim;
time(&hora_ini);
//printf("\nInicio Consumidor %d", id);
while(true) {
// retira item da fila
do {
pthread_mutex_lock(&mutex);
aguardar = false;
count++;
if (count >= max) {
aguardar = true;
time(&hora_fim);
printf("\nConsumidor %d Intervalo de tempo: %f seg.",id, difftime(hora_fim, hora_ini));
pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}
} while(aguardar == true);
...