コード例 #1
0
int main()
{
    processos *pstFila=NULL;
    int i,a;


    for(i=0; i<5; i++)
        insert(&pstFila,i);


    for(i=0; i<5; i++) {
        scanf("%d",&a);
        InsertOrd(&pstFila,a);
    }

    PrintFila(pstFila);


    for(i=0; i<5; i++)
     
        printf("%d\n",removeFILO(&pstFila));

    PrintFila(pstFila);

    fflush(stdin);
    getchar();
}
コード例 #2
0
void ChegadaCliente(void *thread_id){	
	int j = 0;
	int caixa;
	int menorFila;

	while(clientes>0){
		menorFila = NUM_CLIENTES;
		NoCaixa(1.5);

		pthread_mutex_lock(&mutex);			
		for(int i=0;i<NUM_FILA; i++){			
			if(filas[i]==0){
				caixa=i;
				break;	
			}
			else if(filas[i]<menorFila){
				menorFila = filas[i];
				caixa = i;
			}						
		}

		pthread_mutex_unlock(&mutex);

		pthread_mutex_lock(&mutex);
		if(filas[caixa]==0){
			// uso de semaforo ***
			filas_vazia--;
			// 
		}
		pthread_mutex_unlock(&mutex);

		
		pthread_mutex_lock(&mutex);
		filas[caixa]++;		
		cliente_fila++;
		clientes--;
		printf("INSERIRU CLIENTE NA FILA DO CAIXA: %d \n", caixa);
		printf("FALTAM %d CLIENTES P/ CHEGAR.\n", clientes);
		PrintFila();
		pthread_mutex_unlock(&mutex);
	}
}