在 Linux 系统中,pthread 库是用于创建和管理线程的主要工具
#include <pthread.h>
首先,你需要定义一个函数作为线程的执行函数。这个函数应该接受一个 void *
参数,并返回一个 void *
参数。例如:
void *my_thread_function(void *arg) {
// 线程执行的代码
}
使用 pthread_create()
函数创建线程。这个函数接受四个参数:指向 pthread_t
类型变量的指针(用于存储线程ID)、指向 pthread_attr_t
类型变量的指针(用于设置线程属性,通常为 NULL)、指向线程函数的指针以及指向任意类型的参数的指针(传递给线程函数)。例如:
pthread_t thread_id;
int rc = pthread_create(&thread_id, NULL, my_thread_function, NULL);
if (rc != 0) {
// 创建线程失败的处理
}
使用 pthread_join()
函数等待线程结束。这个函数接受两个参数:指向 pthread_t
类型变量的指针(要等待的线程ID)以及指向 void *
类型变量的指针(用于存储线程返回值,通常为 NULL)。例如:
void *thread_return_value;
rc = pthread_join(thread_id, &thread_return_value);
if (rc != 0) {
// 等待线程失败的处理
}
当线程不再需要时,可以使用 pthread_cancel()
函数销毁线程。这个函数接受两个参数:指向 pthread_t
类型变量的指针(要销毁的线程ID)以及指向 void *
类型变量的指针(用于传递取消状态,通常为 NULL)。例如:
rc = pthread_cancel(thread_id);
if (rc != 0) {
// 销毁线程失败的处理
}
除了上述方法外,还有一些其他的 pthread 库函数可用于管理线程,例如:
pthread_attr_init()
:初始化线程属性对象。pthread_attr_setdetachstate()
:设置线程的分离状态(detachable 或 non-detachable)。pthread_attr_setstacksize()
:设置线程的栈大小。pthread_setcancelstate()
:设置线程的取消状态(enable 或 disable)。pthread_setcanceltype()
:设置线程的取消类型(deferred 或 immediate)。这些函数可以根据需要用于更高级的线程管理。在使用这些函数时,请务必参考 pthread 库的文档以了解它们的详细用法和最佳实践。