internal override void TryAlt(ref Worker wr, int i, Cont <X> xK, Else xE) { var pk = xE.pk; if (0 == Pick.Claim(pk)) { Job <xA> xAJ; try { xAJ = Do(); } catch (Exception e) { Pick.PickClaimedAndSetNacks(ref wr, i, pk); xAJ = new AltFail <xA>(e); } xAJ.DoJob(ref wr, new PrepareAltCont <X, xA>(i, xK, xE)); } }
internal override void TryAlt(ref Worker wr, int i, Cont <X> xK, Else xE) { var pk = xE.pk; if (0 == Pick.Claim(pk)) { Alt <X> xA; try { xA = Do(Randomizer.Next(ref wr.RandomLo, ref wr.RandomHi)); Pick.Unclaim(pk); } catch (Exception e) { Pick.PickClaimedAndSetNacks(ref wr, i, pk); xA = new AltFail <X>(e); } xA.TryAlt(ref wr, i, xK, xE); } }