1

クライアントがデータベースにデータを送受信できるように、小さなマルチクライアントサーバーを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;
    }

私がそれを実行した後に表示される唯一のものは

こんにちは

4

2 に答える 2

3

スレッドを待っているわけではありません。サーバースレッドが何かを実行する前にメインスレッドが終了します。たとえば、helloを出力した後、メインスレッドでpthread_joinを実行する必要があります。

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

mainC ++は、実行中の他のスレッドに関係なく、の終わりですぐにプロセスを終了します。たとえば、デーモン以外のすべてのスレッドが終了するのを待つJavaとは対照的に、IIRC。

他のスレッドが終了するまで待ちたい場合は、を使用する必要がありますpthread_join

于 2012-10-10T15:51:12.740 に答える