Código
#include <omp.h> #include <stdio.h> #include <stdlib.h> #define NHILOS 2 void servidor(); void cliente(); int produce(int pet); void lee(int prod); int pet=0, prod=0; omp_lock_t C1; //Candado Servidor omp_lock_t C2; //Candado Cliente int main (int argc, char *argv[]) { int id; omp_init_lock(&C1); omp_init_lock(&C2); omp_set_lock(&C1); omp_set_lock(&C2); omp_set_num_threads(NHILOS); #pragma omp parallel sections shared(pet,prod) { #pragma omp section { servidor(); } #pragma omp section { cliente(); } } return 0; } void servidor() { while(1) { omp_set_lock(&C1); prod = produce(pet); omp_unset_lock(&C2); } } void cliente() { while(1) { omp_unset_lock(&C1); omp_set_lock(&C2); lee(prod); sleep(2); } } int produce(int pet) { prod++; return prod; } void lee(int prod) { }
¿Cómo puedo implementar N clientes y 1 servidor? Ahora se tienen N tareas cliente() y un solo servidor que queda en espera de peticiones de algún cliente.¿Cómo creo las N tareas, sin mas con N hilos?
Ahora se tienen 3 candados: Cliente, Petición y Servidor y la funcion cliente es mas o menos asi:
Código
void cliente() { while(1) { omp_set_lock(&C3); //Peticion omp_unset_lock(&C1); //Servidor omp_set_lock(&C2); //Cliente lee(prod); omp_unset_lock(&C3) sleep(2); } }
Ya tengo las partes solo que no se como conectarlas, saludos!!