How to stop the thread from yielding per 20ms?
izgzhen at gmail.com
Sat Jul 4 10:25:14 UTC 2015
I am trying to stop the GHC thread scheduler from atomically do round-robin scheduling. It might be strange that I am asking for that, in fact, my intention is to implement the “Lightweight Concurrency” on top of current RTS system. I am trying to use `GHC.Event`’s timeout mechanism to interfere with the scheduling behavior and it seems working a bit. But the automatic scheduling at the same time by RTS renders this effort invalid.
For this part, I have tried to modify `rts/Scheduler.c`, masked some `startTimer` in `schedule()`, change the `appendToQueue` to `pushOnQueue` in `scheduleHandleYield` but nothing really works. (The GHC is still doing RR scheduling, even I changed some key code I thought)
So I am curious if anyone familiar with the RTS could give me some suggestions on this problem.
Thanks a lot!
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the ghc-devs