I'm doing some threaded asynchronous networking experiment in python, using UDP.
I'd like to understand polling and the select python module, I've never used them in C/C++.
What are those for ? I kind of understand a little select, but does it block while watching a resource ? What is the purpose of polling ?
If you do read
or recv
, you're waiting on only one connection. If you have multiple connections, you will have to create multiple processes or threads, a waste of system resource.
With select
or poll
or epoll
, you can monitor multiple connections with only one thread, and get notified when any of them has data available, and then you call read
or recv
on the corresponding connection.
It may block infinitely, block for a given time, or not block at all, depending on the arguments.