#include #include #include #include #include #include #include int TEST_TaskDelay(int uiMillSecs) { int iRet; struct timeval tv; tv.tv_usec = (uiMillSecs % 1000) * 1000; tv.tv_sec = uiMillSecs / 1000; do{ iRet = select(1, NULL, NULL, NULL, &tv ); }while((-1 == iRet) && (EINTR == errno)); return 0; } void printids(const char *s) { unsigned int uiIndex; pid_t pid; pthread_t tid; pid = getpid(); tid = pthread_self(); printf("%s pid %u tid %u (0x%x)\n", s, (unsigned int) pid, (unsigned int) tid, (unsigned int) tid); for(uiIndex = 0; uiIndex < 9000; uiIndex++) { TEST_TaskDelay(100); printf("\n jijun TEST_TaskDelay uiIndex=%d return \n ",uiIndex); } return 0; } void *thr_fn(void *arg) { printids("new thread: "); return NULL; } int main(void) { int err; pthread_t ntid; //pthread_t ntid1; err = pthread_create(&ntid,NULL,thr_fn,NULL); if (err != 0) printf("can't create thread: %s\n", strerror(err)); #if 0 err = pthread_create(&ntid1,NULL,thr_fn,NULL); if (err != 0) printf("can't create thread: %s\n", strerror(err)); #endif sleep(2); pthread_cancel(ntid); //pthread_cancel(ntid1); sleep(2); return 0; }