重新进入或线程安全

时间:2014-11-04 13:50:39

标签: multithreading sockets

我已经为Hanlding Multiple clients实现了这个代码。我对此有疑问。这个函数是一个可重入的函数吗?

void *connection_handler(void *socket_desc)
{
    //Get the socket descriptor
    int sock = *(int*)socket_desc;
    int read_size;
    char *message , client_message[2000];

    //Send some messages to the client
    message = "Greetings! I am your connection handler\n";
    write(sock , message , strlen(message));

    message = "Now type something and i shall repeat what you type \n";
    write(sock , message , strlen(message));

    //Receive a message from client
    while( (read_size = recv(sock , client_message , 2000 , 0)) > 0 )
    {
        //Send the message back to client
        write(sock , client_message , strlen(client_message));
    }

    if(read_size == 0)
    {
        puts("Client disconnected");
        fflush(stdout);
    }
    else if(read_size == -1)
    {
        perror("recv failed");
    }

    //Free the socket pointer
    free(socket_desc);

    return 0;
}

如果它处理多个客户端意味着它如何同步?

我在main函数中使用pthread_create调用此函数。

感谢。

0 个答案:

没有答案