コード例 #1
0
 int main(int argc, char **argv) { //Recibe la ruta del archivo de configuracion del Kernel o el nombre del archivo si esta en la misma carpeta
 	program_pid=0;
 	block_sem = list_create();
 	PATH_config = argv[1];
 	inicializarMutex();

 	inicializarConfiguracion(); //Lee el archivo de configuracion y asigna las configuraciones a configuracion_kernel
 	inicializarColas();
 	crearSemaforos();
 	pthread_create(&conexion_plp_umv, NULL, (void*) &core_conexion_umv, NULL);
 	pthread_create(&plp, NULL, (void*) &core_plp, NULL);
 	pthread_create(&pcp, NULL, (void*) &core_pcp, NULL);


 	esperarYCerrarConexiones();
 	cerrarSemaforos();
 	pthread_join(pcp, NULL);
 	pthread_join(plp, NULL);
 	pthread_join(conexion_plp_umv,NULL);
 	destruirColas();
 	liberarMutex();


 	return EXIT_SUCCESS;
 }
コード例 #2
0
ファイル: servidorTorneo.cpp プロジェクト: juanbruno99/juego
int main(){

	//Inicializo la semilla del random utilizando el tiempo actual
	srand(time(NULL));
	//Obtengo un numero de llave random para la memoria compartida
 	llave = (key_t)(1 + (rand() % 255));

	//Estructura que contendra los datos de configuracion
	t_config_server configuracion;

	//Leo el archivo de configuracion, en caso de error,
	//el programa se cierra.
	leer_configuracion_server(&configuracion);

	crearMemoriaCompartida(); //Creamos la Memoria Compartida

	//Creamos los semáforos para la sincronización
	semaforoMutex = sem_open( "/semaforoMutex" , O_CREAT | O_EXCL , 0660 , 1);
	if( semaforoMutex == (sem_t*) -1){
		perror( "Error creando el semáforo mutex.\n");
		exit(0);
	}

	inicializarMatriz();

	capturarSeniales(); //Capturamos las señales

	//Creamos un hilo que se encargue de aceptar las conexiones
	if(pthread_create(&hiloEscucha,NULL , aceptarConexiones ,(void*)&configuracion) < 0){
	fprintf(stderr , "Error al crear el hilo que acepta conexiones.\n");
	exit(0);
   	}

	printf("Esperando conexiones . . . \n");

	asignarPartidas();

	//Ejecuta el Padre (Torneo)
	if( padre == getpid() ){
		esperarHijos();
		P(semaforoMutex);
			//mostrarEstadisticas();
			cerrarSocketDeComunicacion();
		V(semaforoMutex);
		cerrarMemoriaCompartida();
		cerrarSemaforos();
	}

	//JOIN DE LOS HILOS DONDE VA?
	pthread_join(hiloEscucha, NULL);

	printf("Termino el Torneo.\n");

	return 0;
}