in reply to Re: Simultaneously reading from a file and serving data
in thread Simultaneously reading from a file and serving data

select is definitely how I would do it, for several key reasons:

  1. It is architecturally uncomplicated:   the process is actually doing only one thing at a time, even though it is unpredictable what it might do next.
  2. You never have to worry about things being incomplete ... about accidentally sending someone a partial-message that you haven’t finished reading yet.
  3. You can easily prioritize what it is doing, according to the business requirement.
  4. Messy timing issues are generally avoided completely.

The program itself is really a dispatcher, connected to everything else with nice, flexible pipes and sockets.   It goes to sleep, wakes up with a “honey-do list,” does its chores in whatever sequence it best sees fit, then goes back to sleep again.   As long as none of these things take a significant time to actually do, esp. relative to the others, it all works great.