I tried to test the context switch using Thread.Sleep(0) using this code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ThreadMethod
{
class Program
{
public static void ThreadMethod()
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine("ThreadProc: {0}", i);
Thread.Sleep(0);
}
}
static void Main(string[] args)
{
Thread t = new Thread(new ThreadStart(ThreadMethod));
t.Start();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Main Thread here!");
Thread.Sleep(0);
}
t.Join();
}
}
}
but result was the following:
Main Thread here!
ThreadProc: 0
ThreadProc: 1
ThreadProc: 2
ThreadProc: 3
ThreadProc: 4
ThreadProc: 5
ThreadProc: 6
ThreadProc: 7
ThreadProc: 8
Main Thread here!
Main Thread here!
Main Thread here!
Main Thread here!
Main Thread here!
Main Thread here!
Main Thread here!
Main Thread here!
Main Thread here!
ThreadProc: 9
I am developing on Surface PRO 2. Is this behaviour due to a multicore system?