【发布时间】:2017-01-20 15:04:17
【问题描述】:
我正在编写一个非常简单的代码,其中需要使用一些线程。 当我创建第一种类型的线程时,我使用 pthread_create 传递参数:
fman thread_arg;
thread_arg.sd=sda;
char* split = strtok(buffer, "|");
thread_arg.wcount=atoi(split);
split = strtok(NULL,"");
strcpy(thread_arg.id, split);
pthread_create(&thread_temp, NULL, registerF, &thread_arg);
一切正常,但在函数 registerF 中我需要做这样的事情:
wman thread_arg;
thread_arg.sd=foremans_fd[ix];
thread_arg.fmanix=ix;
strcpy(thread_arg.id,tmpr);
pthread_create(&thread_temp, NULL, registerW, &thread_arg);
这些参数是我定义的结构:
typedef struct fman
{
int sd;
char id[100];
int wcount;
} fman;
typedef struct wman
{
int sd;
int fmanix;
char id[100];
} wman;
当我通过 printf("%x, args) 检查它时,我得到相同的地址,但里面的值不同。我的错误在哪里?
【问题讨论】:
标签: c linux multithreading