在Linux中,使用pthread_create
函數創建線程時,可以通過將參數傳遞給線程函數來傳遞參數。以下是pthread_create
函數的原型:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
其中,start_routine
是線程函數的指針,它接受一個void*
類型的參數,并返回一個void*
類型的結果。arg
參數就是要傳遞給線程函數的參數。
在創建線程時,可以將要傳遞的參數作為arg
參數傳遞給pthread_create
函數。在線程函數中,可以將arg
參數轉換為正確的類型,然后使用它。
以下是一個示例代碼,演示如何使用pthread_create
函數傳遞參數:
#include <pthread.h>
#include <stdio.h>
// 線程函數
void *my_thread_func(void *arg) {
int my_arg = *((int*)arg);
printf("Received argument: %d\n", my_arg);
// 具體的線程邏輯
// ...
// 線程結束時,可以通過返回一個值來傳遞結果
// return result;
}
int main() {
pthread_t thread;
int arg = 42; // 要傳遞的參數
// 創建線程,并將參數傳遞給線程函數
if (pthread_create(&thread, NULL, my_thread_func, (void*)&arg) != 0) {
printf("Failed to create thread\n");
return 1;
}
// 等待線程結束
if (pthread_join(thread, NULL) != 0) {
printf("Failed to join thread\n");
return 1;
}
return 0;
}
在上面的示例代碼中,arg
變量是要傳遞給線程函數my_thread_func
的參數。在pthread_create
函數調用時,使用&arg
將其地址傳遞給arg
參數。然后在線程函數中,將arg
參數轉換為int
類型,并使用它。