使用线程传递指针时出错 [英] Error with passing a pointer using threads

查看:109
本文介绍了使用线程传递指针时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Updated code: 3/7/11 : 9:29pm

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;
}  

这篇关于使用线程传递指针时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆