B
This commit is contained in:
parent
e5e8880e41
commit
518da4a923
1019 changed files with 15877 additions and 0 deletions
52
Task/Atomic-updates/BBC-BASIC/atomic-updates.bbc
Normal file
52
Task/Atomic-updates/BBC-BASIC/atomic-updates.bbc
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
INSTALL @lib$+"TIMERLIB"
|
||||
|
||||
DIM Buckets%(100)
|
||||
FOR i% = 1 TO 100 : Buckets%(i%) = RND(10) : NEXT
|
||||
|
||||
tid0% = FN_ontimer(10, PROCdisplay, 1)
|
||||
tid1% = FN_ontimer(11, PROCflatten, 1)
|
||||
tid2% = FN_ontimer(12, PROCroughen, 1)
|
||||
|
||||
ON ERROR PROCcleanup : REPORT : PRINT : END
|
||||
ON CLOSE PROCcleanup : QUIT
|
||||
|
||||
REPEAT
|
||||
WAIT 0
|
||||
UNTIL FALSE
|
||||
END
|
||||
|
||||
DEF PROCdisplay
|
||||
PRINT SUM(Buckets%()) " ", MOD(Buckets%())
|
||||
ENDPROC
|
||||
|
||||
DEF PROCflatten
|
||||
LOCAL d%, i%, j%
|
||||
REPEAT
|
||||
i% = RND(100)
|
||||
j% = RND(100)
|
||||
UNTIL i%<>j%
|
||||
d% = Buckets%(i%) - Buckets%(j%)
|
||||
PROCatomicupdate(Buckets%(i%), Buckets%(j%), d% DIV 4)
|
||||
ENDPROC
|
||||
|
||||
DEF PROCroughen
|
||||
LOCAL i%, j%
|
||||
REPEAT
|
||||
i% = RND(100)
|
||||
j% = RND(100)
|
||||
UNTIL i%<>j%
|
||||
PROCatomicupdate(Buckets%(i%), Buckets%(j%), RND(10))
|
||||
ENDPROC
|
||||
|
||||
DEF PROCatomicupdate(RETURN src%, RETURN dst%, amt%)
|
||||
IF amt% > src% amt% = src%
|
||||
IF amt% < -dst% amt% = -dst%
|
||||
src% -= amt%
|
||||
dst% += amt%
|
||||
ENDPROC
|
||||
|
||||
DEF PROCcleanup
|
||||
PROC_killtimer(tid0%)
|
||||
PROC_killtimer(tid1%)
|
||||
PROC_killtimer(tid2%)
|
||||
ENDPROC
|
||||
Loading…
Add table
Add a link
Reference in a new issue