a method for communication between first and second computer programs having a shared memory . the first computer program has a first work dispatcher for a first work queue . the second computer program has a second work dispatcher for a second work queue . without causing an interrupt , a message or data is written for the second program from the first program to the shared memory and the second work queue is updated with a work item indicating a message or data for the second program . in association with the updating step , it is determined if the second program is currently busy . if so , the second program is not interrupted regarding the message or data . when the second program subsequently becomes not busy , the second program receives , without an interrupt , and executes the work item to receive the message or data . if the second program was not currently busy , the second program is interrupted to process the message or data on its work queue . this imposes a minimal burden on the second program .