I am using socket and setting O\_NONBLOCK with fcntl but still by application consuming 100% CPU. Even I am using select with waiting time 1 ms. 

For reading purpose I am using recv.

I tried it without O\_NONBLOCK and in this case its not consuming 100% CPU but recv taking much time. I tried recv with O\_NONBLOCK option but still recv taking much(sometime 200 ms) time to read. 
We are using select then why recv is taking much time?

I can’t use the first option (socket with O\_NONBLOCK) because CPU is consumed and in second option there is time delay. 

Anyone can suggest the opinions. Its a client application.