如何使用矩阵作为pthread参数传递结构?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用矩阵作为pthread参数传递结构?相关的知识,希望对你有一定的参考价值。

我有以下结构:

typedef struct {
  int row;
  int** matrix;
} values ;

为了填充结构矩阵,我尝试了以下代码:

values **v = (values **)malloc(x * sizeof(values *));
for (int z = 0; z < y; ++z)
     [z] = (values *)malloc(y * sizeof(values));

其中x是行数和y列。

如何填充struct的参数(rowmatrix)并将其作为参数传递给pthread调用的函数?类似于...的东西

pthread_create(&thread1, NULL, somaLinha, v);
答案

为结构分配空间时,C实际上是为整数分配空间加上指针的空间(即4 + 8字节)

您需要为结构分配空间,然后allocate for the matrix

values *v = (values *) malloc(sizeof(values));
v->matrix = (int **) malloc(y * sizeof(int *));
for (int z = 0; z < y; ++z)
    v->matrix[z] = (int *) malloc(y * sizeof(int));

然后你创建线程

pthread_create(&thread1, NULL, somaLinha, v);

以上是关于如何使用矩阵作为pthread参数传递结构?的主要内容,如果未能解决你的问题,请参考以下文章

pthread_create如何传递两个参数以上的参数

pthread_create:分配(malloc)将整数作为最后一个参数传递的优势?

参数传递的不同矩阵结构

如何将网格传递给“void my_func(void * args)”

pthread_create的函数简介

是应该在堆栈还是堆上分配pthread函数参数?