Cursus Raku / Programmatio functionalis, simultanea, reactiva et retialis / Programmatio simultanea / hyper et race 🆕
Parallelismus inordinatus per race
.race eodem modo ac .hyper parallelizat,
una differentia: effectus ordine reddere non promittit.
Quicumque operarius primus finit, effectum suum primus confert.
say (1..10).race.map(* ** 2).sort; # (1 4 9 16 25 36 49 64 81 100)Quadrata ordine imprevisibili redeunt, itaque .sort ibi
est ut exitus determinatus sit. Si sine ordinando impressissemus, numeri
omnes adessent sed fortasse permixti.
Quia effectus ordinatos servare non debet, .race paulo
minus oneris quam .hyper habere potest. Permutatio simplex
est:
- utere
.hypercum ordo effectuum refert; - utere
.racecum non refert — exempli gratia cum effectus summaturus, numeraturus vel aliter modo ab ordine independenti compositurus es.
say (1..100).race.map(* * 2).sum; # 10100Summare ab ordine independens est, itaque .race hic
optio bona est et idem 10100 dat. Utraque methodus circa
eandem ideam versatur — opus independens simul currere sinere — et inter
eas eligis secundum hoc utrum ordo tibi curae sit.
Navigatio cursus
← Quiz — hyper | Temperare per :batch et :degree →
💪 Vel recta ad exercitationes huius
sectionis i.