使用线程传递指针时出错

使用线程传递指针时出错

更新的代码:11/3/7:9:29 pm

using namespace std;

void * matrixACreate(void * param);
void *status;

struct a
{
     int Arow; // Matrix A
     int Acol; // WxX
     int low;  // Range low
     int high;
 };

int main(int argc, char * argv[])
{
    struct a matrix_mult_info;

    matrix_mult_info.Arow = atoi(argv[1]); // Matrix A
    matrix_mult_info.Acol = atoi(argv[2]); // WxX

    matrix_mult_info.low = atoi(argv[5]); // Range low
    matrix_mult_info.high = atoi(argv[6]);

    pthread_t matrixAthread;

    pthread_t runner;
    int error, retValue;

    struct a * a = (struct a *) malloc(sizeof(struct a));
    error = pthread_create(&matrixAthread, NULL, matrixACreate, a );
    //error = pthread_create(&matrixAthread, NULL, matrixBCreate, sendB);
    retValue = pthread_join(matrixAthread, &status);
    //retValue = pthread_join(matrixBthread, &status);

    return 0;
}

void * matrixACreate(void * param) {
    struct a * matrix = (struct a *) param;
    int range = ((matrix->high - matrix->low) + 1);
    cout << matrix->Arow << endl;
    return 0;
}

最佳答案

struct a * a = (struct a *) malloc(sizeof(struct a));
// init a's members
error = pthread_create(&matrixAthread, NULL, matrixACreate, a);


编辑:响应更新的问题:

void * matrixACreate(void * param) {
    struct a * matrix = (struct a *) param;
    int range = ((matrix->high - matrix->low) + 1);
    cout << matrix->Arow << endl;
    return NULL;
}

关于c++ - 使用线程传递指针时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5227087/

10-10 03:36