Tech Off Post

Single Post Permalink

View Thread: A simple and pure C# implementation of the good old linked list
  • User profile image
    evildictait​or

    , MasterPie wrote

    *snip*

    Thread.Sleep(Thread.CurrentThread.ManagedThreadId * c);

    where c is verrrrrry large. Tongue Out

    No. Thread.Sleep guarantees that your thread will sleep for at least N milliseconds, but makes no guarantee about when it will wake up after that.

    Suppose that c is a million, and we have two threads with managed id 1 and 2.

    The first thread sleeps for 1 * one million milliseconds. The second sleeps for 2 * one million milliseconds.

    But in your code there is no guarantee that the first thread will start before 2.1 million milliseconds after the call. And consequently you still have a race-condition.