我大致理解你的运用场景了。一般通用的做法是这样的:在新线程的入口程序里面通常会有如下代码段:while(sys_state != SYS_SHUT_DOWN){ if(hasJobs()) { //here process you jobs } else { sleep(nnnnn);//等着任务的到来 }}接下来的代码就是函数返回及线程退出之前的资源回收了一般都不会主动使用thread_cancel来结束线程。线程执行的代码段结束了,它自己会退出的,你只需要考虑什么时候让它的代码段结束就行了。