and the event library is used to wake it back up when data is ready

But who is complete data-processing? There is some some thread that complete data reading or what?

As I understand it's not possible to read data without any thread because someone should do reading.