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;
}
これは、新しいウィンドウの新しいスレッドに新しいクライアントを作成することになっていますが、それは行いません。
client_create関数が新しいウィンドウを作成するため、pthread_createに何を入れるか、また、クライアントの新しいインスタンスをどのように取得するかがわかりません。そして、pthread_createを実行して新しいスレッドを作成しようとすると、新しいウィンドウも作成されます...これがjavaの場合、ユーザーが「e」を押すたびに、クラスクライアントの新しいインスタンスを作成します...しかし、「できます」ここで本当にそうします。助言がありますか?