I suggest both : Interrupts and threads.
Check ibnotify for GPIB : it creates a threads when an interrupt occurs.
For RS-232 it is a bit more complicate : interrupt is a GUI callback. Not very efficient, and has a few drawbacks (check my todays post for the drawbacks "Questions on RS-232 interrupt handling").
Pierre