将多个参数传递给结构中的线程

时间:2011-09-22 01:17:47

标签: c multithreading struct arguments

我在使用包含其他结构

的结构传递参数时遇到问题

我知道我使用这些结构的方式有问题,但我不知道在哪里......

谢谢!

这是我的结构

typedef struct {
IMAGE *imagenfte;
IMAGE *imagendst;
}thread_data;

//thread_data *data = (thread_data *) malloc(sizeof(thread_data));

这是其他结构

 typedef struct {
    HEADER header;
    INFOHEADER infoheader;
    PIXEL *pixel;
    } IMAGE;

IMAGE imagenfte,imagendst;

这是我的线程功能

void *processBMP2(void *argumentos) 
{
thread_data *my_data;
my_data =  (thread_data *) (argumentos);
IMAGE *imagefte, *imagedst;
imagefte =  my_data->imagenfte;
imagedst = my_data->imagendst;
free(my_data);
int i,j;
int count=0;
PIXEL *pfte,*pdst;
PIXEL *v0,*v1,*v2,*v3,*v4,*v5,*v6,*v7;
int imageRows,imageCols;
memcpy(imagedst,imagefte,sizeof(IMAGE)-sizeof(PIXEL *));
imageRows = imagefte->infoheader.rows;
imageCols = imagefte->infoheader.cols;
imagedst->pixel=(PIXEL *)malloc(sizeof(PIXEL)*imageRows*imageCols);
...

这就是我创建线程和传递de参数的方式

     pthread_t hilo;

thread_data *my_data = (thread_data *) malloc(sizeof(thread_data));

my_data->imagenfte = &imagenfte;
my_data->imagendst = &imagendst;

pthread_create(&hilo,NULL, processBMP2, my_data);

//processBMP(&imagenfte,&imagendst);

1 个答案:

答案 0 :(得分:1)

你正在做的事情是完全正确的。新线程需要负责释放内存,因为父线程无法知道新线程何时完成访问它。