我正在尝试在 C 中创建一个简单的聊天程序。对于每个客户端,我正在创建一个新线程,以便服务器可以同时处理与多个用户的通信。我将每个用户数据存储在一个结构中,如下所示:
struct User /*structure to handle all clients*/
{
int port;
char username[10];
struct User*connected;
struct User*next;
};
在主线程中,我创建一个新线程并为用户传入结构:
pthread_create(&thr,NULL,server,(void*)&args);
这是为每个用户完成的。
现在,当创建每个新线程时,我从要在线程中使用的参数中复制用户结构。
void *server(void * arguments)
{
struct User*cur_user = arguments;
}
这适用于第一个用户,但是,当新用户加入时,参数中的信息将被覆盖。
我了解线程在程序中共享数据。但是,有没有办法可以复制参数并将它们相同到线程中的局部变量,所以它们只是线程范围?换句话说,我怎样才能cur_user
在线程中使用变量而不让其他线程修改它的内容?
编辑:
我试图复制内存,但运气不佳:
struct User args;
struct User*new_arg = malloc(sizeof(struct *new_arg));
memcpy(new_arg, *args, sizeof(new_arg))
我的malloc有问题吗?