one server | two servers | four servers | |
one
notifier |
likely queue
congestion in server |
likely queue
congestion in notifer |
|
two
notifiers |
one per channel?
one per direction? |
how should they
be paired? |
|
four
notifiers |
certain queue
congestion in server |
likely queue
congestion in server |
best performance,
most tasks |
Issues
Either
Or
Many other issues come up below as we consider possible task structures.
Proprietor `owns' a service
notifierPid = Create( notifier ); //Should notifier code name be hard coded? Send( notifierTid, MyTid( ), ... ); //On return noifier is known to be okay RegisterAs( ); //On return requests can begin.
FOREVER { requesterTid = Receive( request ); switch ( request.type ) { case NOTIFIER: Reply( notifier ); updateDataStructures( ); for each queued client { if( serviceable( client ) ) { provideService( client ); Reply( client ); } } break; case CLIENT: if ( serviceable( requester ) ) { provideService( requester ); Reply( requesterTid ); else enQueue( requester ); } }
Return to: