补全createThread函数,使用pthread_create函数创建线程,并将start_routine作为线程处理函数,arg作为线程处理函数的参数,同时将创建成功的线程ID作为createThread函数的返回值
时间: 2024-12-15 19:26:56 浏览: 8
在C语言中,我们可以使用POSIX线程库(pthread)来创建线程。下面是一个补全`createThread`函数的例子,它会使用`pthread_create`函数来创建一个新的线程:
```c
#include <pthread.h>
// 假设 start_routine 是线程处理函数,arg 是传递给它的参数
typedef void (*thread_func)(void* arg);
int createThread(thread_func start_routine, void* arg) {
pthread_t thread_id; // 线程ID变量
int result;
// 创建线程
result = pthread_create(&thread_id, NULL, start_routine, arg);
if (result != 0) {
printf("Error creating thread: %d\n", result);
return -1; // 返回错误码
}
// 如果创建成功,返回线程ID
printf("Thread created with ID: %ld\n", (long)thread_id);
return thread_id;
}
// 示例线程处理函数
void my_thread_function(void* data) {
// 这里是对数据data的操作
printf("Thread function running with argument: %p\n", data);
}
int main() {
int some_data = 42;
// 调用createThread并传入函数和参数
pthread_t new_thread = createThread(my_thread_function, &some_data);
if (new_thread == -1) {
// 处理创建失败的情况
exit(1);
}
// 主线程继续执行其他任务...
pthread_join(new_thread, NULL); // 等待新线程结束
return 0;
}
```
在这个示例中,`createThread`函数接受一个指向`thread_func`类型的指针以及一个用户数据指针`arg`,然后使用`pthread_create`创建线程。如果创建成功,函数返回新创建线程的ID;若失败,则返回错误代码。
阅读全文