--- Quote Start ---
thanks, in your answer to my second question did you want to say 'you should not read.....'?
--- Quote End ---
Yes, indeed ! :-)
If your results are synchronous, then you can read at any (obviously synchronous) time.
Do you want to read ALL the results ? OR do you want to read results sometimes ? That is the question.
In the first case, you may need a FIFO
In the second case, you just need to read. you have to read data that don't change when you read (of course). Use synchronous design and/or a register that keeps a stable "result" when being read.
interrupts or polling mode is a choice : In polling mode, you have to read time to time even if there is no new results. Need a flag somewhere.
You may miss results if your reading loop is not fast enough to read the results.
Question of gap between results is more a timing question.
In interrupt mode, your main program will be interrupted in order to treat the interruption. Need no flag because you assert the interruption.
DO your results come from an external component ? In this case, you should resynchronize (by using at least 2 cascaded D Flip Flop) to avoid metastablilty (I experienced that).