首页 > 解决方案 > 从 pthread 函数返回向量?

问题描述

在找出从 pthread 函数返回向量的语法时遇到了一些麻烦。这是我目前拥有的:

typedef struct vectorData {
    vector v1;
    vector v2;
} vectorData;

void *vectorAddThread(void *arg) {
    vectorData *data = (vectorData *)arg;
    vector v1 = data->v1;
    vector v2 = data->v2;
    vector result = {v1->x + v2->x, v1->y + v2->y, v1->z + v2->z};
    return (void*) result;
}

我在最后两行关于返回结果和添加部分的错误。谢谢

标签: cparallel-processingpthreads

解决方案


您不能将 a 转换structvoid *指针。您需要vector在您的情况下动态分配 a malloc,并返回指针。

vector *result = malloc(sizeof(vector));
result->x = ?;
result->y = ?;
result->z = ?;
return (void *)result;

现在这将解决struct从返回的函数返回 a 的问题void *。但是,如果您使用的是 pthreads,您不应该从它们返回对象,您需要将vector其作为用户数据传递给arg.


推荐阅读