我正在尝试让我的小型多客户端服务器在pthread中运行,以便客户端可以接收数据并将数据发送到数据库。 目前我可以telnet到服务器,向服务器发送消息,它将被回显。我想接受客户输入并“使用”它并向他发送答案。 我能做到的唯一方法是将服务器放在我假设的线程中。 所以我创建了一个简单的线程并从中调用了服务器函数,但服务器由于某种原因不会启动。我做错了什么?
void *startServer(void *)
{
cout << "Starting server\n";
Server();
}
int main()
{
pthread_t t;
pthread_create(&t, NULL, &startServer, NULL);
cout << "Hello";
return 0;
}
我运行后唯一显示的是
您好
答案 0 :(得分:3)
您不是在等待线程,主线程在服务器线程可以执行任何操作之前退出,您需要在主线程中执行pthread_join,例如,在打印hello之后。
pthread_join(t, NULL);
答案 1 :(得分:0)
C ++会立即退出main
末尾的进程,而不管正在执行的任何其他线程。与例如相反Java,等待所有非守护程序线程完成,IIRC。
如果您想等到其他线程完成,则需要使用pthread_join
。