I am using pthreads and sockets. What I am going to be having is multiple socket connections (no more than 5 or so). What I need is a recv() function on each of them in their own thread.
I just basically need to know what a good way is. The way I am doing it now runs my program at like 95% cpu usage. I can't believe this is good, but I don't know another way. Does anyone know how to keep recv blocking?
Below is some code, main is some pseudo code. As you can see, I just throw some while loops down.
Code:int main (void) { create variables... serv = connectserver(host, port); if (serv) create_recv_thread(serv, serv_recv, &listen_server); while(1); } int create_recv_thread(int server, buffer_t *buffer, void *function) { pthread_t recv_thread; struct recv_args args; args.server = server; args.buffer = buffer; return pthread_create(&recv_thread, NULL, function, &args); } void *listen_server(void *threadarg) { int result; struct recv_args *my_data; int server; buffer_t *buffer; my_data = (struct recv_args*)threadarg; server = my_data->server; buffer = my_data->buffer; while (1) { result = recv(server, buffer->buffer_data, 2048, 0); if (result > 0) printf("%s %d bytes received through socket #%d\n", gettime(), result, server); else if (result == 0) printf("%s Connection to socket #%d closed\n", gettime(), server); else printf("%s recv error\n", gettime()); } }



LinkBack URL
About LinkBacks


