1

我试图让我的小型多客户端服务器在 pthread 中运行,以便客户端可以接收数据并将数据发送到数据库。目前我可以远程登录到服务器,向服务器发送一条消息,它会被回显。我想接受客户的输入并“使用”它并向他发送答案。我能做到这一点的唯一方法是将服务器放在我假设的线程中。所以我创建了一个简单的线程并从中调用服务器函数,但服务器由于某种原因无法启动。我究竟做错了什么?

     void *startServer(void *)
    {

        cout << "Starting server\n";
        Server();
    }



    int main() 
    {

        pthread_t t;

        pthread_create(&t, NULL, &startServer, NULL);
        cout << "Hello";

        return 0;
    }

我运行后唯一显示的是

你好

4

2 回答 2

3

你不是在等待线程,主线程在服务器线程可以做任何事情之前就退出了,你需要在主线程中做一个 pthread_join,例如,在打印 hello 之后。

pthread_join(t, NULL);
于 2012-10-10T14:57:51.123 回答
0

C++ 在 结束时立即退出进程main,而不管正在执行的任何其他线程。与等待所有非守护线程完成的 Java 不同,IIRC。

如果要等到其他线程完成,则需要使用pthread_join.

于 2012-10-10T15:51:12.740 回答