#include #include #include #include void *send_wrapper(void *arg); main() { unsigned int i; int ret; pthread_t media_thread; media_thread = 0; printf("Starting"); for ( i=0 ; i<1000 ; i++ ) { printf("Loop %d\n", i); /* Create a thread to send RTP packets */ pthread_attr_t attr; pthread_attr_init(&attr); /* if (media_thread != 0) { printf("cancelling\n"); // If a media_thread is already active, kill it before starting a new one pthread_cancel(media_thread); pthread_join(media_thread, NULL); media_thread = 0; } */ int ret = pthread_create(&media_thread, &attr, send_wrapper, (void *) 0); if(ret) printf("Can create thread to send RTP packets"); pthread_attr_destroy(&attr); pthread_join(media_thread, NULL); media_thread = 0; #ifdef NO_SELECT sleep(1); #endif } } void *send_wrapper(void *arg) { struct timeval tv; int result=0; /* pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); */ tv.tv_sec = 0; tv.tv_usec = 900 * 1000; printf("Select "); #ifndef NO_SELECT result = select(0, (fd_set *)NULL, (fd_set *)NULL, (fd_set *)NULL, &tv); #endif if (result!=0) printf("Result %d\n", result); pthread_exit(NULL); return NULL; }