If the event of interest is:
- Asynchronous
- Urgent
- Infrequent
then an interrupt based handler would make sense.
If the event of interest is:
- Synchronous (i.e. you know when to expect it within a small window)
- Not Urgent (i.e. a slow polling interval has no ill effects)
- Frequent (i.e. majority of your polling cycles create a ‘hit’)
then polling might be a better fit.
Other considerations include whether you are writing a device driver for an OS or just writing bare metal code with no thread support. In bare metal situations the CPU is often just looping when it isn’t busy so it might as well be polling something.