Example #1
0
 public Interleave(TeardownReceiverGroup teardown, ExclusiveReceiverGroup mutex, ConcurrentReceiverGroup concurrent)
 {
     ReceiverTask[] branches = teardown._branches;
     for (int i = 0; i < branches.Length; i++)
     {
         ReceiverTask receiverTask = branches[i];
         receiverTask.ArbiterContext = new InterleaveReceiverContext(InterleaveReceivers.Teardown);
     }
     ReceiverTask[] branches2 = mutex._branches;
     for (int j = 0; j < branches2.Length; j++)
     {
         ReceiverTask receiverTask2 = branches2[j];
         receiverTask2.ArbiterContext = new InterleaveReceiverContext(InterleaveReceivers.Exclusive);
     }
     ReceiverTask[] branches3 = concurrent._branches;
     for (int k = 0; k < branches3.Length; k++)
     {
         ReceiverTask receiverTask3 = branches3[k];
         receiverTask3.ArbiterContext = new InterleaveReceiverContext(InterleaveReceivers.Concurrent);
     }
     _mutexBranches = new List <ReceiverTask>(teardown._branches);
     ReceiverTask[] branches4 = mutex._branches;
     for (int l = 0; l < branches4.Length; l++)
     {
         ReceiverTask item = branches4[l];
         _mutexBranches.Add(item);
     }
     _concurrentBranches = new List <ReceiverTask>(concurrent._branches);
 }
Example #2
0
 public static Interleave Interleave(TeardownReceiverGroup teardown, ExclusiveReceiverGroup exclusive, ConcurrentReceiverGroup concurrent)
 {
     return(new Interleave(teardown, exclusive, concurrent));
 }