標籤:can rac oid thread create name eth ack linu
#include <pthread.h>#include <stdio.h>#include <unistd.h>void* thread_func(void* param){ const char* p = (const char*)param; pid_t pid = 0; pthread_t tid = 0; pid = getpid(); tid = pthread_self(); printf("%s -> %8u %8u\n", p, (unsigned int)pid, (unsigned int)tid);}void* thread_wait_cancel(void* p){ printf("thread wait cancel -> i‘m waitting for cancel\n"); sleep(10000); printf("if u saw me, there got be something wrong\n");}int main(int argc, char* argv[]){ pthread_t tid = 0; pthread_create(&tid, NULL, thread_func, (void *)"sub thread"); pthread_t tid_cancel = 0; pthread_create(&tid_cancel, NULL, thread_wait_cancel, NULL); // wait thread tid to exit pthread_join(tid, NULL); // cancel a thread void* stat = 0; pthread_cancel(tid_cancel); pthread_join(tid_cancel, &stat); /* stat = -1 stand for PTHREAD_CANCELED */ printf("cancel thread exit state : %d\n", stat); // show main thread infomation thread_func((void *)"main thread"); return 0;}
注意編譯的時候須要加上選項-lpthread。由於pthread不是linu的預設庫,例如以下所看到的:
gcc thr.c -lpthread
Linux線程基本使用代碼示範範例