Hello, I'm working on creating a multi-player racing game and my server is multi-threaded and can send 5 packets/second over the network. I created a non-multithreaded server which used blocking and that was doing almost 50 packets/second. This tells me something happened when I introduced threads. I even tried setting the priority to highest but no performance difference : This is how I crate my thread : for (;;) /* Run forever */ { clntSock = AcceptTCPConnection(servSock); /* Create separate memory for client argument */ threadArgs = (struct ThreadArgs *) malloc(sizeof(struct ThreadArgs)); threadArgs -> clntSock = clntSock; threadArgs -> servSock = servSock; threadArgs -> clntAddr = getClientAddr(); if (CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadMain, threadArgs, 0, (LPDWORD) &threadID) == NULL) DieWithError("pthread_create() failed"); printf("with thread %ld\n", threadID); } /* NOT REACHED */ } void *ThreadMain(void *threadArgs) { SOCKET clntSock; /* Socket descriptor for client connection */ SOCKET servSock; sockaddr clntAddr; /* Guarantees that thread resources are deallocated upon return */ /* Extract socket file descriptor from argument */ clntSock = ((struct ThreadArgs *) threadArgs) -> clntSock; servSock = ((struct ThreadArgs *) threadArgs) -> servSock; clntAddr = ((struct ThreadArgs *) threadArgs) -> clntAddr; free(threadArgs); /* Deallocate memory for argument */ /* Handle the clients */ HandleTCPClient(); return (NULL); } I'm new to threading and don't have much experience any code examples or please someone let me know what can be changed. OS : Win Xp Visual Studio 2008 Compiler Please let me know if any other information is required.