int main(int argc, char **argv) { SDL_Thread *threads[NUM_THREADS]; uintptr_t i; int init_sem; /* Enable standard application logging */ SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); if (argc < 2) { SDL_Log("Usage: %s init_value\n", argv[0]); return (1); } /* Load the SDL library */ if (SDL_Init(0) < 0) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError()); return (1); } signal(SIGTERM, killed); signal(SIGINT, killed); init_sem = atoi(argv[1]); sem = SDL_CreateSemaphore(init_sem); SDL_Log("Running %d threads, semaphore value = %d\n", NUM_THREADS, init_sem); /* Create all the threads */ for (i = 0; i < NUM_THREADS; ++i) { char name[64]; SDL_snprintf(name, sizeof (name), "Thread%u", (unsigned int) i); threads[i] = SDL_CreateThread(ThreadFunc, name, (void *) i); } /* Wait 10 seconds */ SDL_Delay(10 * 1000); /* Wait for all threads to finish */ SDL_Log("Waiting for threads to finish\n"); alive = 0; for (i = 0; i < NUM_THREADS; ++i) { SDL_WaitThread(threads[i], NULL); } SDL_Log("Finished waiting for threads\n"); SDL_DestroySemaphore(sem); TestWaitTimeout(); SDL_Quit(); return (0); }
int main(int argc, char **argv) { SDL_Thread *threads[NUM_THREADS]; uintptr_t i; int init_sem; /*if(argc < 2) { fprintf(stderr,"Usage: %s init_value\n", argv[0]); return(1); }*/ /* Load the SDL library */ if ( SDL_Init(0) < 0 ) { fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); return(1); } signal(SIGTERM, killed); signal(SIGINT, killed); init_sem = 2; //atoi(argv[1]); sem = SDL_CreateSemaphore(init_sem); printf("Running %d threads, semaphore value = %d\n", NUM_THREADS, init_sem); /* Create all the threads */ for( i = 0; i < NUM_THREADS; ++i ) { threads[i] = SDL_CreateThread(ThreadFunc, (void*)i); } /* Wait 10 seconds */ SDL_Delay(10 * 1000); /* Wait for all threads to finish */ printf("Waiting for threads to finish\n"); alive = 0; for( i = 0; i < NUM_THREADS; ++i ) { SDL_WaitThread(threads[i], NULL); } printf("Finished waiting for threads\n"); SDL_DestroySemaphore(sem); TestWaitTimeout(); SDL_Quit(); return(0); }