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.