I am working on verifying Go applications and wondering if you are aware of any way to manipulate the scheduler? I only found
runtime.Gosched() that preempt the thread (M) from the current goroutine and give back the control to the scheduler to execute a runnable goroutine from the queue. But for the sake of systematic search-space reduction for dynamic verification, I need a way to dictate interleavings of goroutines (e.g., what goroutine to execute after a context switch).
I would appreciate any input on this topic.