int main(int argc, char **argv)
{
  void *ret;
  int i;

  printf("Testing sthreads, impl: %s\n",
	 (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user");
	
  sthread_init();

  mon1 = sthread_monitor_init();
  mon2 = sthread_monitor_init();

    
  if (sthread_create(thread0, (void*)1, 10) == NULL) {
    printf("sthread_create failed\n");
    exit(-1);
  }

  sthread_monitor_enter(mon1);
  for (i = 0; i < NUMBER; i++){
    if ((thr[i] = sthread_create(thread1, (void*)i, 10)) == NULL) {
      printf("sthread_create failed\n");
      exit(-1);
    }
    sthread_yield();
  }
  for (i = 0; i < NUMBER; i++){
    sthread_monitor_wait(mon1);
  }
    
  printf("in main\n");
  
  sthread_monitor_exit(mon1);
  
  sthread_sleep(10000);

  sthread_monitor_enter(mon2);
  sthread_monitor_signalall(mon2);
  sthread_monitor_exit(mon2);
  
  for (i = 0; i < NUMBER; i++){
    sthread_join(thr[i], &ret);
  }
  printf("\nSUCCESS in creating %i threads\n", NUMBER);
  printf("out main\n");

  return 0;
}
Beispiel #2
0
int main(int argc, char **argv) {
  int arg = 1;
  printf("Testing sthread_mutex_*, impl: %s\n",
      (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user");
  
  sthread_init();

  mon = sthread_monitor_init();
  
  sthread_monitor_enter(mon);
  if (sthread_create(thread_start, (void*)&arg, 1) == NULL) {
    printf("sthread_create failed\n");
    exit(1);
  }
  printf("thread principal vai bloquear-se\n");
  sthread_monitor_wait(mon);
  printf("thread principal desbloqueada\n");
  i = 2;
  printf("i=2\n");
  sthread_monitor_exit(mon);
  if (i==2) {
    printf("\nSUCESSO!\n");
  } else {
    printf("\nteste falhado...\n");
  }
  return 1;
}
int main(int argc, char **argv) {
    int arg = 1;

    sthread_init();

    mon = sthread_monitor_init();

    sthread_monitor_enter(mon);
    if (sthread_create(thread_start, (void*)&arg, 10) == NULL) {
        printf("sthread_create failed\n");
        exit(1);
    }
    printf("thread principal vai bloquear-se\n");
    sthread_monitor_wait(mon);
    printf("thread principal desbloqueada\n");
    sthread_monitor_exit(mon);
    printf("\nSUCESSO!\n");
    return 1;
}
Beispiel #4
0
int main(int argc, char **argv)
{
	sthread_t threads[NUM_TC];
	sthread_t prodthr;
	int i;
	available_reqs = 0;
	
	// initialize sthread lib	
	sthread_init();
	
	//initialize filesystem
	snfs_init(argc, argv);
		
   	// initialize SNFS layer
       struct sockaddr_un servaddr;
                	
	// initialize communications
	srv_init_socket(&servaddr);
			
	// initialize  monitor
        mon = sthread_monitor_init();
        
	// create thread_consumer threads
	for(i = 0; i < NUM_TC; i++) {
		threads[i] = sthread_create(thread_consumer, (void*) NULL,1);
		if (threads[i] == NULL) {
			printf("Error while creating threads. Terminating...\n");
			exit(-1);
		}
	}
	
	// create producer thread
	prodthr = sthread_create(thread_producer, (void*) NULL,1);
	
	
	sthread_join(prodthr, (void**)NULL);
	for(i = 0; i < NUM_TC; i++)
		sthread_join(threads[i], (void **)NULL);

	return 0;
}