在C語言中,可以使用pthread庫來創建線程。以下是使用pthread庫創建線程的方法:
包含頭文件:首先需要包含< pthread.h >頭文件。
聲明線程函數:定義一個函數作為線程的入口函數,該函數必須具有以下形式:void* function_name(void* arg)
。函數參數可以是任意類型的指針,也可以為空。
創建線程:使用pthread_create()
函數來創建線程。該函數的原型為int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg)
。其中,thread
是一個指向pthread_t類型的指針,用于存儲線程的ID;attr
是一個指向pthread_attr_t類型的指針,用于指定線程的屬性,通常為NULL;start_routine
是指向線程函數的指針;arg
是傳遞給線程函數的參數。
等待線程結束:如果需要等待線程結束并獲取返回值,可以使用pthread_join()
函數。該函數的原型為int pthread_join(pthread_t thread, void **value_ptr)
。其中,thread
是要等待的線程ID;value_ptr
是一個指向指針的指針,用于存儲線程的返回值。如果不需要等待線程結束,則可以不使用該函數。
終止線程:線程執行完畢后,可以通過pthread_exit()
函數來終止線程。該函數的原型為void pthread_exit(void *retval)
。其中,retval
是一個指向任意類型的指針,用于指定線程的返回值。
需要注意的是,在使用pthread庫時,需要鏈接pthread庫。可以在編譯時添加-pthread
選項,例如gcc -pthread program.c -o program
。