2024年5月25日发(作者:)

pthreadcreate用法

pthread_create的用法

pthread_create是一个用来创建线程的函数,是POSIX标准库中

的一部分。它的原型如下:

int pthread_create(pthread_t* thread, const pthread

_attr_t* attr, void* (*start_routine)(void*), void* arg);

参数解析

• thread是指向线程标识符的指针,用来存储新创建的线程的标

识符。

• attr是一个指向线程属性的指针,它指定了新线程的一些属性。

如果不需要特殊属性,可以传入NULL。

• start_routine是线程的主函数,该函数在新线程中执行。它

的返回值和参数都是void指针类型,可以用来传递任意类型的

数据。

• arg是传递给start_routine的参数。

使用示例

以下是使用pthread_create函数创建新线程的几个示例:

• 示例1:创建一个不带参数的新线程

#include <>

#include <>

void* thread_function(void* arg) {

printf("Hello from a new thread!n");

pthread_exit(NULL);

}

int main() {

pthread_t thread_id;

pthread_create(&thread_id, NULL, thread_function, NU

LL);

pthread_join(thread_id, NULL);

printf("Main ");

return 0;

}

• 示例2:创建一个带参数的新线程

#include <>

#include <>

void* thread_function(void* arg) {

int thread_arg = *((int*) arg);

printf("Hello from a new thread! Argument: %dn", th

read_arg);

pthread_exit(NULL);

}

int main() {

pthread_t thread_id;

int arg = 42;

pthread_create(&thread_id, NULL, thread_function, (v

oid*) &arg);

pthread_join(thread_id, NULL);

printf("Main ");

return 0;

}

• 示例3:创建多个新线程

#include <>

#include <>

void* thread_function(void* arg) {

printf("Hello from a new thread! Thread ID: %lun",

(unsigned long) pthread_self());

pthread_exit(NULL);

}

int main() {

const int num_threads = 5;

pthread_t thread_ids[num_threads];

for (int i = 0; i < num_threads; ++i) {

pthread_create(&thread_ids[i], NULL, thread_func

tion, NULL);

}

for (int i = 0; i < num_threads; ++i) {

pthread_join(thread_ids[i], NULL);

}

printf("Main ");

return 0;

}

总结

通过使用pthread_create函数,我们可以方便地创建新的线程并

在其中执行指定的函数。通过合理使用线程参数和线程属性,我们可

以实现更加灵活和高效的多线程编程。