在简单的pthread中运行服务器

时间:2012-10-10 14:55:50

标签: c++ linux pthreads

我正在尝试让我的小型多客户端服务器在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;
    }

我运行后唯一显示的是

  

您好

2 个答案:

答案 0 :(得分:3)

您不是在等待线程,主线程在服务器线程可以执行任何操作之前退出,您需要在主线程中执行pthread_join,例如,在打印hello之后。

pthread_join(t, NULL);

答案 1 :(得分:0)

C ++会立即退出main末尾的进程,而不管正在执行的任何其他线程。与例如相反Java,等待所有非守护程序线程完成,IIRC。

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