Actor Computing
The actor mail system provides asynchronous buffered communication and does not guarantee that messages (tasks in actor terminology) are delivered in the order they are sent. Suppose actor A sends tasks t1, t2, t3,... , to actor B and we want actor B to process tasks in the order A sends them.
(a) What extra information could be added to each task so that B can tell whether it receives a task out of order? What should B do with atask when it ?rst re- ceives it before actually performing the computation associated with the task?
(b) Because the actor model does not impose any constraints on how soon a task must be delivered, a task could be delayed an arbitrary amount of time. For example, suppose actor A sends tasks t1, t2, t3,..., t100 and actor B receives the tasks t1, t3,..., t50 without receiving task t2. Because B would like to proceed with some of these tasks, it makes sense for B to ask A to resend task t2. Describe a protocol for A and B that will add resend requests to the approach you described in part (a) of this problem.
(c) Suppose B wants to do a ?nal action when A has ?nished sending tasks to
B. How can A notify B when A is done? Be sure to consider the fact that if A sends I'm done to B after sending task t100, the I'm done message may arrive before t100.