-
Notifications
You must be signed in to change notification settings - Fork 89
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Version
1.0-RC
Scala Version
3.7.1
Expected Behavior
import kyo.*
object BlockingIssue:
val atomicInt = new AtomicInteger(0)
val tick =
Loop.forever {
for
stopwatch <- Clock.stopwatch
_ <- Async.sleep(100.millis)
elapsed <- stopwatch.elapsed
_ <- Sync.defer(println(s"${atomicInt.incrementAndGet()} - ${elapsed.toMillis}ms"))
yield ()
}
def task(index: Int) =
for
stopwatch <- Clock.stopwatch
_ <- Sync.defer(Thread.sleep(1000))
elapsed <- stopwatch.elapsed
_ <- Sync.defer(println(s"Task $index completed in ${elapsed.toMillis}ms"))
yield ()
def runParallelTasks(n: Int) =
Async.collectAllDiscard(List.tabulate(n)(task))
val run =
Async.zip(tick, runParallelTasks(100))Should produce something similar to:
1 - 102ms
2 - 100ms
3 - 100ms
4 - 101ms
5 - 100ms
6 - 101ms
7 - 101ms
8 - 100ms
9 - 100ms
Task 90 completed in 1001ms
Task 10 completed in 1001ms
Task 60 completed in 1001ms
Task 25 completed in 1001ms
Task 40 completed in 1001ms
Task 0 completed in 1001ms
Task 85 completed in 1001ms
Task 50 completed in 1001ms
Task 45 completed in 1001ms
Task 15 completed in 1001ms
Task 70 completed in 1001ms
Task 95 completed in 1001ms
Task 20 completed in 1001ms
Task 30 completed in 1001ms
Task 80 completed in 1001ms
Task 35 completed in 1001ms
Task 65 completed in 1001ms
Task 55 completed in 1001ms
Task 75 completed in 1001ms
Task 5 completed in 1001ms
10 - 100ms
11 - 101ms
12 - 100ms
13 - 100ms
14 - 100ms
15 - 100ms
16 - 101ms
17 - 101ms
18 - 101ms
19 - 101ms
Task 86 completed in 1000ms
Task 76 completed in 1000ms
Task 81 completed in 1000ms
Actual Behavior
Ticks don't come at regular intervals
Task 50 completed in 1000ms
......
Task 15 completed in 1000ms
1 - 3001ms
Steps to Reproduce
scala-native π
Current Workaround
System.setProperty("kyo.scheduler.coreWorkers", "200")
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working