Skip to content

Instantly share code, notes, and snippets.

@vasily-kirichenko
Created September 18, 2018 17:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vasily-kirichenko/55481886d20eb17e5ed97ac9293cc30b to your computer and use it in GitHub Desktop.
Save vasily-kirichenko/55481886d20eb17e5ed97ac9293cc30b to your computer and use it in GitHub Desktop.
open Akka.Actor
open Akka.Streams
open Akka.Streams.Dsl
open System
open System.Threading
[<EntryPoint>]
let main _ =
let sys = ActorSystem.Create "test"
let mat = ActorMaterializer.Create sys
let q =
Source
.Queue(5, OverflowStrategy.Backpressure)
.Select(fun x ->
Thread.Sleep 100
x
)
.To(Sink.ForEach (fun x -> printfn "got %d" x))
.Run(mat)
[1..100]
|> List.map (fun x ->
async {
Console.WriteLine (sprintf "offering %d..." x)
let! _ = q.OfferAsync x |> Async.AwaitTask
Console.WriteLine (sprintf "offered %d" x)
})
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
q.Complete()
sys.WhenTerminated.Wait()
0
offering 4...
offering 3...
offering 2...
offering 1...
offering 6...
offering 8...
offering 5...
offering 10...
offering 9...
offering 11...
offering 12...
offering 14...
offering 13...
offering 15...
offering 16...
offering 17...
offering 18...
offering 19...
offering 20...
offering 22...
offering 21...
offering 24...
offering 23...
offering 26...
offering 25...
offering 28...
offering 29...
offering 30...
offering 31...
offering 32...
offering 33...
offering 34...
offering 35...
offering 7...
offering 36...
offering 27...
offering 37...
offering 38...
offering 39...
offering 40...
offering 41...
offering 42...
offering 43...
offering 44...
offering 45...
offering 46...
offering 47...
offering 48...
offering 49...
offering 50...
offering 52...
offering 53...
offering 54...
offering 55...
offering 56...
offering 57...
offering 58...
offering 60...
offering 59...
offering 61...
offering 63...
offering 64...
offering 65...
offering 62...
offering 66...
offering 67...
offering 68...
offering 69...
offering 70...
offering 72...
offering 71...
offering 74...
offering 75...
offering 73...
offering 76...
offering 77...
offering 79...
offering 78...
offering 80...
offering 82...
offering 83...
offering 84...
offering 85...
offering 86...
offering 51...
offering 87...
offering 88...
offering 90...
offering 91...
offering 92...
offering 93...
offering 94...
offering 95...
offering 96...
offering 97...
offering 98...
offering 99...
offering 100...
offering 81...
offering 89...
offered 4
got 4
offered 3
got 3
offered 2
got 2
offered 1
got 1
offered 6
got 6
offered 8
got 8
offered 5
got 5
offered 10
got 10
offered 9
got 9
offered 11
got 11
offered 12
got 12
offered 14
got 14
offered 15
got 15
offered 16
got 16
offered 17
got 17
offered 13
got 13
offered 18
got 18
offered 19
got 19
offered 20
got 20
offered 22
got 22
offered 21
got 21
offered 24
got 24
offered 23
got 23
offered 26
got 26
offered 25
got 25
offered 28
got 28
offered 29
got 29
offered 30
got 30
offered 31
got 31
offered 32
got 32
offered 33
got 33
offered 34
got 34
offered 35
got 35
offered 37
got 37
offered 38
got 38
offered 39
got 39
offered 40
got 40
offered 41
got 41
offered 7
got 7
offered 42
got 42
offered 43
got 43
offered 36
got 36
offered 45
got 45
offered 44
got 44
offered 46
got 46
offered 47
got 47
offered 48
got 48
offered 49
got 49
offered 50
got 50
offered 52
got 52
offered 53
got 53
offered 55
got 55
offered 54
got 54
offered 56
got 56
offered 27
got 27
offered 57
got 57
offered 58
got 58
offered 60
got 60
offered 59
got 59
offered 61
got 61
offered 63
got 63
offered 64
got 64
offered 65
got 65
offered 62
got 62
offered 66
got 66
offered 67
got 67
offered 68
got 68
offered 69
got 69
offered 70
got 70
offered 72
got 72
offered 71
got 71
offered 75
got 75
offered 73
got 73
offered 74
got 74
offered 76
got 76
offered 77
got 77
offered 79
got 79
offered 78
got 78
offered 80
got 80
offered 82
got 82
offered 83
got 83
offered 84
got 84
offered 86
got 86
offered 85
got 85
offered 51
got 51
offered 87
got 87
offered 88
got 88
offered 90
got 90
offered 91
got 91
offered 92
got 92
offered 93
got 93
offered 94
got 94
offered 95
got 95
offered 96
got 96
offered 97
got 97
offered 98
got 98
offered 99
got 99
offered 100
got 100
offered 81
got 81
offered 89
got 89
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment