int main()
{
  pthread_t  t1, t2, t3;

  my_main_start();

  my_obj_reg(&data);

  my_mutex_init(&A, NULL);
  my_mutex_init(&B, NULL);
  my_mutex_init(&C, NULL);

  my_thread_create(&t1, 0, thread_routine_1, 0);
  my_thread_create(&t2, 0, thread_routine_2, 0);
  my_thread_create(&t3, 0, thread_routine_3, 0);

  my_thread_join(t1, 0);
  my_thread_join(t2, 0);
  my_thread_join(t3, 0);

  my_mutex_destroy(&A);
  my_mutex_destroy(&B);
  my_mutex_destroy(&C);

  my_main_end();

  return 0;
}
int main() {
	int i;
	for (i = 1; i < MAX_THREADS; ++i) {
		my_threads[i].t_STATE = 0;
	}

	struct itimerval alarm_interval;

	alarm_interval.it_interval.tv_sec = 0;
	alarm_interval.it_interval.tv_usec = 100000;
	alarm_interval.it_value.tv_sec = 0;
	alarm_interval.it_value.tv_usec = 100000;
	setitimer(ITIMER_REAL, &alarm_interval, 0);

	signal(SIGALRM, scheduler); 

	int tid0 = my_thread_create(thread_1);
	printf("\n                   THREAD %d CREATED                  \n\n", tid0);
	int tid1 = my_thread_create(thread_2);
	printf("\n                   THREAD %d CREATED                  \n\n", tid1);
	int tid2 = my_thread_create(thread_3);
	printf("\n                   THREAD %d CREATED                  \n\n", tid2);
	int tid3 = my_thread_create(thread_4);
	printf("\n                   THREAD %d CREATED                  \n\n", tid3);

	my_thread_wait(tid0);
	printf("\n                  THREAD %d FINISHED                  \n\n", tid0);
	my_thread_wait(tid1);
	printf("\n                  THREAD %d FINISHED                  \n\n", tid1);
	my_thread_wait(tid2);
	printf("\n                  THREAD %d FINISHED                  \n\n", tid2);
	my_thread_wait(tid3);
	printf("\n                  THREAD %d FINISHED                  \n\n", tid3);

	return 0;
}
Exemple #3
0
int main(int argc, char*argv[]) {
    //variables
    const config_setting_t *figuras, *figura_actual;
    int count, n;
    int xInit, yInit, xIncremento, yIncremento, xDir, yDir, xFinal, yFinal, rotacion, animacion, colorIn, colorOut, tiempoInicio, tiempoIntervalo,tiempoVida, tipoScheduler, tiquetes;


    
    

    //init socket ***
    cantidad_sockets = 3;
    
    struct sigaction sa;
    sa.sa_handler = &sig_int;
    // Block every signal during the handler
    sigfillset(&sa.sa_mask);
    if (sigaction(SIGINT, &sa, NULL) == -1) {
        printf("Error: cannot handle SIGINT");
    }
    int sock = open_socket();
    if (sock == -1) {
        printf("error occured\n");
        return -1;
    }
    /*Inicializa los sockets de los monitores 1 y 2*/
    /*Inicializa los sockets de los monitores 1 y 2*/
    int contador_sockets;
    for (contador_sockets = 0; contador_sockets < cantidad_sockets; contador_sockets++) {
        if (contador_sockets == 0) {
            socket_monitor_1 = listener((void*) &sock);
            printf("creo monitor 1\n");
        } else if (contador_sockets == 1) {
            socket_monitor_2 = listener((void*) &sock);
            printf("creo monitor 2\n");
        } else if (contador_sockets == 2) {
            socket_monitor_3 = listener((void*) &sock);
            printf("creo monitor 3\n");
        }
    }
    printf("ya cree todos los sockets\n");
    

    my_thread_init();
    
    printf("se hizo el init de my_thread\n");
        
    //init lista
    initLista();
    
      printf("se hizo el init de la lista figuras\n");

    
    //Lectura figuras
    config_t cfg, *cf;
    cf = &cfg;
    config_init(cf);

    if (!config_read_file(cf, "Archivos de Configuracion/test.cfg")) { //directorio archivo
        fprintf(stderr, "%s:%d - %s\n",
                config_error_file(cf),
                config_error_line(cf),
                config_error_text(cf));
        config_destroy(cf);
        return (EXIT_FAILURE);
    }

    figuras = config_lookup(cf, "Figuras");
    count = config_setting_length(figuras);

    for (n = 0; n < count; n++) {
        figura_actual = config_setting_get_elem(figuras, n);
        config_setting_lookup_int(figura_actual, "Xinit", &xInit);
        config_setting_lookup_int(figura_actual, "Yinit", &yInit);
        config_setting_lookup_int(figura_actual, "Xincremento", &xIncremento);
        config_setting_lookup_int(figura_actual, "Yincremento", &yIncremento);
        config_setting_lookup_int(figura_actual, "Xdir", &xDir);
        config_setting_lookup_int(figura_actual, "Ydir", &yDir);
        config_setting_lookup_int(figura_actual, "XFinal", &xFinal);
        config_setting_lookup_int(figura_actual, "YFinal", &yFinal);
        config_setting_lookup_int(figura_actual, "RotacionInit", &rotacion);
        config_setting_lookup_int(figura_actual, "Animacion", &animacion);
        config_setting_lookup_int(figura_actual, "ColorIn", &colorIn);
        config_setting_lookup_int(figura_actual, "ColorOut", &colorOut);
        config_setting_lookup_int(figura_actual, "TiempoInicio", &tiempoInicio);
        config_setting_lookup_int(figura_actual, "TiempoIntervalo", &tiempoIntervalo);
         config_setting_lookup_int(figura_actual, "TiempoVida", &tiempoVida);
        config_setting_lookup_int(figura_actual, "TipoScheduler", &tipoScheduler);
        config_setting_lookup_int(figura_actual, "Tiquetes", &tiquetes);
        
        pFigura* fig = figura_create(n,xInit,yInit,rotacion,colorIn,colorOut,1,tiempoIntervalo,xIncremento,yIncremento,xDir,yDir,xFinal,yFinal,tiempoVida,asignarMonitor(xInit),tiempoInicio,animacion);
        agregarFiguraLista(fig);
        my_thread_create(pintame, 1, (void*) fig, tipoScheduler, tiquetes);

    }
    config_destroy(cf);

    /*
    //pFigura* fig1 = figura_create(1, 0, 0, 0, 1, 2, 1, 100, 1, 0, 1, 1, 90, 0, 45000, asignarMonitor(0), 0, 1);
    //pFigura* fig2 = figura_create(2, 40, 0, 0, 5, 6, 1, 1000, 1, 0, 1, 1, 80, 0, 45000, asignarMonitor(40), 0, 1);
    //pFigura* fig3 = figura_create(3, 0, 8, 0, 3, 4, 1, 500, 1, 0, 1, 1, 80, 8, 40000, asignarMonitor(0), 5000, 0);
    //pFigura* fig4 = figura_create(4, 120, 8, 0, 6, 7, 1, 700, 1, 0, -1, 1, 0, 8, 60000, asignarMonitor(120), 2000, 0);
    agregarFiguraLista(fig1);
    agregarFiguraLista(fig2);
    //agregarFiguraLista(fig3);
    //agregarFiguraLista(fig4);

    my_thread_create(pintame, 1, (void*) fig1, 1, 0);
    my_thread_create(pintame, 1, (void*) fig2, 1, 0);
    //my_thread_create(pintame, 1, (void*) fig3, 1, 0);
    //my_thread_create(pintame, 1, (void*) fig4, 1, 0);
    */

    while (1);
    //my_thread_join(t3);


    printf("Exit\n");
    exit(0);
}