#include #ifdef USE_SDL #include #include #else #include #endif int zero = 0; // Thread that immediately exits. #ifdef USE_SDL int waste_thread(void *unused __attribute__ ((unused))) #else void *waste_thread() #endif { //Do nothing. #ifdef USE_SDL return 0; #else pthread_exit(&zero); #endif } int usage(char *name) { printf("Usage: %s \n", name); return 1; } int main(int argc, char *argv[]) { int time, i; #ifndef USE_SDL pthread_attr_t attr; pthread_t child; #endif if (argc != 2) return usage(argv[0]); time = atoi(argv[1]); if (time < 1) return usage(argv[0]); for (i = 0; i < time; i++) { #ifdef USE_SDL SDL_CreateThread(waste_thread, NULL); #else pthread_attr_init(&attr); // Make it detached. pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); // // And one-to-one with kernel threads. pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); pthread_create(&child, &attr, waste_thread, NULL); #endif // Sleep a second. sleep(1); } return 0; }