| 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: