繁体   English   中英

线程参数打印垃圾值

[英]Thread argument printing garbage values

我在传递参数的线程上尝试了一个简单的程序。

#include<stdio.h>
#include<pthread.h>
#include<malloc.h>

#define NUMTHREADS 5

typedef struct _data_t{
        int data;
        char* name;
}_data;

void* mythread(void* arg){
        _data* mydata = (struct _data_t*) arg;
        printf("\n no : %d name : %s \n",mydata->data,mydata->name);
        pthread_exit(NULL);
}

int main(){
        pthread_t tid[NUMTHREADS];
        _data mydata;
        mydata.data = 100;
        mydata.name = "Netapp";
        int i;
        for(i=0;i<NUMTHREADS;i++){
                pthread_create(&tid[i],NULL,&mythread,(void*)&mydata);
        }
        pthread_exit(NULL);
        return 0;
}

输出:

angus @ ubuntu:〜/ angus / thread $ ./a.out

no:0名称:1 I ^H H PTI 0@

no:0名称:1 I ^H H PTI 0@

no:0名称:1 I ^H H PTI 0@

no:0名称:1 I ^H H PTI 0@

no:0名称:1 I ^H H PTI 0@

main终止时, mydata不再存在,但线程仍在运行并访问它。

您应该在退出main (使用pthread_join )之前等待生成的线程终止,或者定义mydata以使其超出main范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM