【发布时间】:2013-02-07 15:47:16
【问题描述】:
typedef struct client
{
pthread thread;
Window_t *win
}client;
client * client_create(int ID)
{
client *new_Client = (client *) malloc(sizeof(client));
char title[16];
if (!new_Client) return NULL;
sprintf(title, "Client %d", ID);
/* Creates a window and set up a communication channel with it */
if ((new_Client->win = window_create(title)))
return new_Client;
else {
free(new_Client);
return NULL;
}
}
当用户输入“e”时,我尝试使用新客户端和窗口创建一个新线程,这就是我的 int_main。 该标志只是告诉我用户输入了e
if(eflag == 1)
{
client *c = NULL;
c=client_create(started);
pthread_create(&c.thread, NULL, client_create, (void *) &started);
started++;
eflag =0;
}
这应该在新窗口的新线程上创建一个新客户端,但它没有这样做。
我不确定要在我的 pthread_create 中放入什么,以及我应该如何获取客户端的新实例,因为 client_create 函数会创建一个新窗口。当我尝试通过执行 pthread_create 创建一个新线程时,它还会创建一个新窗口...如果这是 java oeverytime 用户按“e”,我只会创建一个类客户端的新实例...但我可以' t真的在这里。有什么建议?
【问题讨论】:
-
你的代码是做什么的?这个 window_create 函数是什么?
-
最初这是一个单线程程序。 window_createe 创建一个新窗口,用户可以在其中与数据库交互,.我正在努力做到这一点,所以你可以拥有尽可能多的用户
标签: c multithreading pointers pthreads