Sarsistema
Enviado por Christopher • 23 de Agosto de 2018 • 1.139 Palabras (5 Páginas) • 276 Visitas
...
Procesado el producto 1 del Cliente 2 -> Tiempo: 1seg
Procesado el producto 1 del Cliente 1 -> Tiempo: 2seg
Procesado el producto 2 del Cliente 2 -> Tiempo: 4seg
Procesado el producto 2 del Cliente 1 -> Tiempo: 4seg
Procesado el producto 3 del Cliente 1 -> Tiempo: 5seg
Procesado el producto 3 del Cliente 2 -> Tiempo: 9seg
Procesado el producto 4 del Cliente 2 -> Tiempo: 10seg
Procesado el producto 4 del Cliente 1 -> Tiempo: 10seg
Procesado el producto 5 del Cliente 2 -> Tiempo: 11seg
El Cajero 2 HA TERMINADO DE PROCESAR AL Cliente 2 EN EL TIEMPO: 11seg
Procesado el producto 5 del Cliente 1->Tiempo: 12seg
Procesado el producto 6 del Cliente 1->Tiempo: 15seg
El Cajero 1 HA TERMINADO DE PROCESAR AL Cliente 1 EN EL TIEMPO: 15seg
En este caso para poder ingresar más cliente como indica en el proyecto usaremos hilos para los cajeros 2 funciones cajero1 y cajero2
En el cajero1 usaremos la sentencia for para recorrer el tiempo dentro de esa función tenemos un puntero y un char y srtlen para que devuelva los caracteres pero como son numero hacemos case para trasformar de char a int
void cajero1(char *arg){
for(i; i
j+=(int) arg[i]-48;
printf ("Procesando el producto [%i] del Cliente 1->TIEMPO: %i(seg) \n", i+1, j);
fflush(stdout);
usleep(1000000);
}
printf("\nEl Cajero 1 ha terminado de procesar Cliente 1 en el TIEMPO: %i(seg)\n\n", j);
}
En el cajero2 es el mismo procesamiento para que la concurrencia se cumpla que pueden ingresar varios productos a la vez
void cajero2(char *arg){
for(producto; producto
tiempo+=(int) arg[producto]-48;
printf ("Procesando el producto [%i] del Cliente 2->TIEMPO: %i(seg) \n", producto+1, tiempo);
fflush(stdout);
usleep(1300000);
}
printf("\nEl Cajero 2 ha terminado de procesar Cliente 2 en el TIEMPO: %i(seg)\n", tiempo);
}
Llamamos a los métodos como hicimos en el primero si es mayor a 1 podrá comenzar las compras caso contrario no creamos los hilos y un contador para acumular los tiempos
void main(int argc, char *argv[]){
pthread_t hilo1, hilo2;
int contador=1;
if(argc
printf("Datos Mal Ingresados\n");
}else if(argc>=1){
printf("\nEl cajero 1 comienza a procesar la compra del Cliente %d en el TIEMPO: %d (seg)\n", contador, tiempo);
printf("El cajero 2 comienza a procesar la compra del Cliente %d en el TIEMPO: %d (seg)\n\n", contador+1, j);
pthread_create(&hilo1, NULL ,(void*)cajero1, argv[1]);
pthread_create(&hilo2, NULL ,(void*)cajero2, argv[2]);
pthread_join(hilo1, NULL);
pthread_join(hilo2, NULL);
contador++;
}else if(argc==0){
printf("\n termina de ejecutar los hilos\n");}}
Programa completo
int i=0, j=0;
int tiempo=0, producto=0;
void cajero1(char *arg){
for(i; i
j+=(int) arg[i]-48;
printf ("Procesando el producto [%i] del Cliente 1->TIEMPO: %i (seg) \n", i+1, j);
fflush(stdout);
usleep(1000000);
}
printf("\nEl Cajero 1 ha terminado de procesar Cliente 1 en el TIEMPO: %i (seg)\n\n", j);
}
void cajero2(char *arg){
for(producto; producto
tiempo+=(int) arg[producto]-48;
printf ("Procesando el producto [%i] del Cliente 2->TIEMPO: %i (seg) \n", producto+1, tiempo);
fflush(stdout);
usleep(1300000);
}
printf("\nEl Cajero 2 ha terminado de procesar Cliente 2 en el TIEMPO: %i (seg)\n", tiempo);
}
void main(int argc, char *argv[]){
pthread_t hilo1, hilo2;
int contador=1;
if(argc
printf("Datos Mal Ingresados\n");
}else if(argc>=1){
printf("\nEl cajero 1 comienza a procesar la compra del Cliente %d en el TIEMPO: %d (seg)\n",
...