static internal int ChooseWildcardReceiveToMatch(OMini::MiniMPIStringRuntime self, int[] wildRecvIdxs) { return(Helper.SimpleWrap <int>( delegate(ClrSyncManager manager) { // Don't match unless all our processes are blocked if (!self.AreAllProcessesBlocked()) { return -1; } // let CHESS choose for us return wildRecvIdxs[MChessChess.Choose(wildRecvIdxs.Length)]; }, delegate() { // Don't match unless all our processes are blocked if (!self.AreAllProcessesBlocked()) { return -1; } return self.ChooseWildcardReceiveToMatch(wildRecvIdxs); } )); }
static internal int ChooseSendToMatchWithWildcardReceive(OMini::MiniMPIStringRuntime self, List <int> sendInstrIdxs) { return(Helper.SimpleWrap <int>( delegate(ClrSyncManager manager) { // Don't match unless all our processes are blocked if (!self.AreAllProcessesBlocked()) { return -1; } // let CHESS choose for us return sendInstrIdxs[MChessChess.Choose(sendInstrIdxs.Count)]; }, delegate() { // Don't match unless all our processes are blocked if (!self.AreAllProcessesBlocked()) { return -1; } return self.ChooseSendToMatchWithWildcardReceive(sendInstrIdxs); } )); }