pthread_create概念和使用案例
pthread_create
是 POSIX 线程(pthread)库中的一个函数,用于在 C 或 C++ 程序中创建新的线程。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
概念:
pthread_create
的函数原型如下:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
参数说明:
thread
:指向 pthread_t 类型的指针,用于存储新创建线程的标识符。attr
:设置新线程的属性,如线程栈大小、调度策略等。如果为 NULL,则使用默认属性。start_routine
:线程函数的起始地址,即线程创建后要执行的函数。arg
:传递给线程函数的参数。
返回值:- 成功:返回 0。
- 失败:返回错误编号。
使用案例:
以下是一个简单的使用 pthread_create
创建线程的例子:
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
// 线程函数
void *thread_function(void *arg) {
char *message = (char *)arg;
printf("Thread says: %s\n", message);
return NULL;
}
int main() {
pthread_t my_thread;
char *message = "Hello from the new thread!";
// 创建线程
if (pthread_create(&my_thread, NULL, thread_function, (void *)message) != 0) {
perror("Thread creation failed");
return 1;
}
// 等待线程结束
pthread_join(my_thread, NULL);
printf("Thread finished execution\n");
return 0;
}
在这个例子中:
- 定义了一个线程函数
thread_function
,它接收一个字符串参数并打印它。 - 在
main
函数中,使用pthread_create
创建了一个新线程,并传递了thread_function
作为线程函数和要打印的消息作为参数。 - 使用
pthread_join
等待新创建的线程结束。
编译时需要链接 pthread 库:
gcc -o thread_example thread_example.c -lpthread
运行程序,输出可能如下:
Thread says: Hello from the new thread!
Thread finished execution
注意事项:
- 线程创建后,主线程和新线程将并发执行,执行顺序不确定。
- 在多线程程序中,确保正确地管理线程的创建和销毁,避免资源泄漏。
- 使用线程时,要注意线程安全问题,避免竞态条件和死锁。