I am using pipes to communicate between threads in my code which was
written for linux. Pipes were used there as the thread was waiting on
select from other sockets and it was made to wait on this pipe also
using the same select call. But, now when I try to port the code to
windows, windows pipes behave like files doesn't allow any ioctl
action to make it non-blocking and neither does it allow to be used in
the select call.

Is there any mechanism available in windows to emulate functionality
of pipes of linux?

I thought of replacing the pipes part with sockets/named-pipes, but
both sockets as well as named-pipes need a server side and client
side, but whereas pipes on creation, make two ends (read / write)

Any pointers to this will help.

Thanks in advance!