Actor Model and Process Calculi - Issues With Synchronous Channels - Livelock On Getting From Multiple Channels

Livelock On Getting From Multiple Channels

Consider the following program written in CSP :

[Bidder1 :: b: bid; *[Bids1?b → process1!b; Bids2?b → process1!b;] || Bidder2 :: b: bid; *[Bids1?b → process2!b; Bids2?b → process2!b;] ]

As pointed out in Knabe, an issue with the above protocol (A simple distributed protocol) is that the process Bidder2 might never accept a bid from Bid1 or Bid2 (a phenomenon called livelock) and consequently process2 might never be sent anything. In each attempt to accept a message, Bidder2 is thwarted because the bid that was offered by Bids1 or Bids2 is snatched away by Bidder1 because it turns out that Bidder1 has much faster access than Bidder2 to Bids1 and Bids2. Consequently Bidder1 can accept a bid, process it and accept another bid before Bidder2 can commit to accepting a bid.

Read more about this topic:  Actor Model And Process Calculi, Issues With Synchronous Channels

Famous quotes containing the words multiple and/or channels:

    Combining paid employment with marriage and motherhood creates safeguards for emotional well-being. Nothing is certain in life, but generally the chances of happiness are greater if one has multiple areas of interest and involvement. To juggle is to diminish the risk of depression, anxiety, and unhappiness.
    Faye J. Crosby (20th century)

    Television is becoming a collage—there are so many channels that you move through them making a collage yourself. In that sense, everyone sees something a bit different.
    David Hockney (b. 1937)