Saturday, July 26, 2008

Advantages and Disadvantages of Thread pool

Benefits of Using the Thread Pool

Using the thread pool is the easiest technique you can use to create a multithreaded application for the following reasons:

  • You do not have to create, manage, schedule, and terminate your thread, the thread pool class do all of this for you.

  • There is no worries about creating too many threads and hence affecting system performance. Thread pool size is constrained by the .NET runtime. The number of threads you can use at the same time is limited.

  • You need to write less code, because the .NET framework manages your thread internally with a set of well tested, and bug free routines.

Limitations of Using the Thread Pool

Despite the ease of use, the thread pool has the following limitations or disadvantages when compared to manually managing your threads:

  • With thread pool, you have no control over the state and priority of the thread.
  • With thread pool, you can not give a stable identity to your thread and keep tracking it.
  • When submitting a process to the thread pool, you have no idea when the process will be executed. Your process may be delayed when there are high demand on the thread pool.
  • The thread pool is not suitable when you want to run two tasks or processes using two threads, and need these two tasks to be processed simultaneously in a deterministic fashion.
  • The .NET framework uses the thread pool for asynchronous operations, and this places additional demand on the limited number of available threads.
  • Despite of robust application isolation, there are situations where your application code can be affected by another application code.
In situations where you can not use the thread pool because of its limitations, you can create new threads manually and manage them yourself. This technique is much more complex than using the thread pool, but it gives you more control over your threads.