foreground threads vs background threads

Jalal Said picture Jalal Said · May 7, 2011 · Viewed 7.1k times · Source

MSDN states that:

Background threads are identical to foreground threads with one exception: a background thread does not keep the managed execution environment running

  1. Is there any dereference in the Thread Quantum that given by OS to the thread if it were a background thread rather than the foreground threads? Check this.

  2. When setting a background thread priority to a higher value like Highest, will it get more quantum than a foreground one with lower priority?

Thanks in advance.

Answer

David Heffernan picture David Heffernan · May 7, 2011

Managed foreground/background threads, the Windows thread quantum and thread priority are orthogonal concepts.

  • Being a foreground thread means that the process cannot be stopped until it (and all other foreground threads) are stopped.
  • The quantum is the length of time a thread gets to run before the system will consider scheduling another thread on that processor.
  • The thread priority determines the pecking order within all ready to run, waiting threads.

Of these three items, only foreground/background pertains to managed code.

Now to your questions.

  1. The foreground process is a Windows concept. It is unrelated to foreground/background threads in .net.
  2. Thread priority does not affect the quantum.