Created
April 25, 2018 23:24
-
-
Save isaksky/650784bd4aa54990aab9556f14457377 to your computer and use it in GitHub Desktop.
Gjallarhorn read consistency
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
..................................X...X....X.X.X.X....XX.XXX...X.....XX....X..........XX.....X..X..XX..X.......X....X...XXX.X..X..XX....X.X..XX.X..X.X....X....X.X.XX.X..........XX..X....X.XX.X.XX..XXX.XXXXXX............X.....X..XX..XXX.....X.X.X.X....X..X.XX.XX.X..XX....X.......X..X.X...XX.XX..X..X..X..XX..X......X..XX.XX.XX..X.....X...XX..X.....XX......X.......X....X.................X.....................X...............X............X.X.......XX..XX......X.X.X...XXXX.X.XXXXXX.X.XX..X...X........X.....XX...X.XXXXXX.....XXXX.......X.X.X...XX..X.X....XXX...X....X..X.......X.X.........X.XX....X.........XX.XX.XX.X..X...X.X.X...XX....XX...........X........................X..X.X.X...XX....................X........XX.......X........X....X...............X............X..X.X.XXX...XXXX.....XX...X...X.....X......XX.X.X...X....X..X.X..X..X..XXX.X.XXXXX........XX....XX.X.XXXXX..X.X........X...........X..X.X.X...X......XX...X......X..X.X..X.X..X.....XX...X...X.....XX..X......X..X....X.XX.X..X.X.X.X.X.X..X....X.X....XX.X.....XXXX.X.X.XX.........XXX.X...XX..X..X..XX...X.XX...................X...XX.....X.................XX...XXX.X..X.......X.........X.XX..X..XX...X.X..X.X..........X..X.XX....X...X.X.XX...........X...........X.X...X..XX......X......................X.X....X...X.X.....X.XX.XXXX..XXX....XX.X...X..............X.........X...X...X.........XX.............X..XX......XXXX.XXX.X................X..X.............X...X..X....X.....................XX.X.X..........X..X....................X.........X..X.X..X.........X..........XX...X.................XXX.....XXX.X..XX.XXXX.X...X...X..X.XX.X..XXXXXXXX......X...X....XXX.XXXXXXXXXX..XX.XX.X............X..........X.................X.............X..................XXX..X.X.X..X.XX.....X..X.........X...X...XX..X............X..X..X....X.XX..X..X.....X.XX...X.......X....XXXX.X....XX.......XX..........X..........X....XX...X..XX.XXX.XX..X.X..X.X.XX.X....XX..XX....XX......X.XXX..................XX.XX...X......X......X..X.....XX..X.X..X...XX.X.....X.....X......X.XXXX...XX.XX...X.X.....X...X.....X.....X.X.XXXXX...X.X.X.X.X..X..X.XXXX.X.XXX.X.XXXXXXXXX...XXX.XXX.XXX...........X...............X.X...X.....X...............X.........XXX.X.X.X....X..X....X.......X.X..X........X.....X...X.........X......X..X.XXX.X.X.X.......X..X..XX.....X...........XX....X...........XXX..X..XXXXX.XXX..X.X.XX..XX.X....XXXXXXX.....X..X.X................X....X.........XX..X.XX.X.X.X....X.....XX..X..........X....XX.XX.......XX...XXXX..X....X..X.X...XX...XXXXX.XX.X..X...............X...............X....X...........X...............X......XX.X.X....X...XX.X......X...XX.X.X...X............X.........X...X..........X................X.......X.X.......X.X...X.......X.XX.X...............XXX.X.....XX..X.X.XXXX.XX....................X..X.X......X....XX......X.................XX.X..X....X.........X..XX..XX................X..XX....X......X.......X....X.X...X...XXX..........XX....XXX.....X.............XX.X...X.X.XX.X.......X...................X.....................X..X...........X..X....X....XX...XX...X..X.X..X..X.X.X....X........XX..XX........X...............X..............................X....X.....X........X....X...XX...........XX....X...XXX......X.X....XX....X.X..X.X....XXX.X...X....XX..XXXX.....XXXX.XX....................X.X...X..X....XXX..XX.XXX.XX...XX.....X........XXXXX.XXX.......X.XX.........X.X.X.X....XXX..X..XX.X.XX....XXXX.XXX.XXXX.X..X.X....XXXX.X..X..X.X..X.XXX....X.X.....XX..X....X.X.....XX....XX.XXX.X..X..XXXX.X....X.XXXX....X....XXXXX.XXX.....X....X.....X..X.XX.....X.....X.X..X.X..X.X..X........X.X....X....X.X.X.XXXXX........X..XXX.X...........X......X.XXX..............X.X...........X..............X..X........X...........XX..XXXX.XXXX.XX.X..X..X.XXX.......XX..X......X.XXXXX...X..X....XX...XXX.......X.X..X.X.....XXXXX.....X.X........X.XX.XX...X.XX.X........X.........X..XX.X............X....X.............X.X..X..X..X...X...XXX.............X.....X.X.......X.XX...XX...XX...X....X........X..X.....X...X.....X | |
Comment: | |
Expected s to always be bigger than m, and therefore not see any X chars. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open System | |
open System.Collections.Concurrent | |
open System.Threading.Tasks | |
#r @".\packages\Gjallarhorn.1.2.3\lib\netstandard2.0\Gjallarhorn.dll" | |
#r "netstandard" | |
open Gjallarhorn | |
let m1 = Mutable.createThreadsafe (box -1) | |
let s1 = m1 |> Signal.map (fun i -> (i :?> int) + 1) | |
let incr_task = | |
Task.Factory.StartNew | |
(fun () -> | |
for i = 0 to 1000000 do | |
m1.Value <- box i) | |
let read_tasks = | |
[| for i = 0 to 10 do | |
yield Task.Factory.StartNew | |
(fun () -> | |
for j = 0 to 100000 do | |
let m = m1.Value :?> int | |
let s = s1.Value | |
if s <= m then | |
Console.Write('X') | |
elif s = m + 1 then | |
() //Console.Write('O') | |
else | |
Console.Write('.') | |
) | |
|] | |
incr_task.Wait() | |
Task.WaitAll(read_tasks) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment