wallace b mcclure scalable development inc
Skip this Video
Download Presentation
Overview of Threading with the .NET Framework

Loading in 2 Seconds...

play fullscreen
1 / 30

Overview of Threading with the .NET Framework - PowerPoint PPT Presentation

  • Uploaded on

Wallace B. McClure Scalable Development, Inc. Overview of Threading with the .NET Framework. Scalable Development, Inc. Building systems today that perform tomorrow. .NET Resources. ASP.NET – www.asp.net AspAdvice – www.aspadvice.com Windows Forms – www.windowsforms.net

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Overview of Threading with the .NET Framework' - bijan

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
wallace b mcclure scalable development inc
Wallace B. McClure

Scalable Development, Inc.

Overview of Threadingwith the .NET Framework

Scalable Development, Inc.

Building systems today that perform tomorrow.

net resources
.NET Resources
  • ASP.NET – www.asp.net
  • AspAdvice – www.aspadvice.com
  • Windows Forms – www.windowsforms.net
  • Architecture – msdn.microsoft.com/architecture
  • .NET News – www.dotnetwire.com
what is multitasking multiprocessing
What is MultiTasking /Multiprocessing?
  • Ability of multiple applications to work at the same time.
  • Cooperative multitasking. Windows 3.1 & Mac OS pre-X applications were responsible for passing control of processing to each other. One application can cause problems in the whole system by blocking other running apps.
  • Pre-emptive multitasking. Win32 & Mac OSX applications have processing capabilities granted to them by the OS. One application is less like to cause a problem. TimeSlice is given to the app.
what is threading
What is Threading?
  • Threading is the ability of a single application (process) to perform multiple units of work that are controlled by the parent application.
algorithms and their impact
Algorithms and Their Impact
  • Dividing an application into “threads” will not automatically make an application faster.
  • How an application runs will determine how well threading in an application will work.
  • Threading is not a magic “snake oil.”
serial processes
Serial Processes
  • Serial. One step within the algorithm must be completed before the next step.
parallel processes
Parallel Processes
  • Parallel. Steps within the algorithm are not dependent on other steps to be completed first.
  • Algorithms are neither Serial or Parallel but some combination.
  • Assume an app that is 50% parallel.
    • Only improve by up to 25% by adding an additional thread.
    • Never double the speed.
  • Must understand your algorithm.
  • Where are your bottlenecks and your opportunities for improvement?
types of suitable apps algorithms
Types of Suitable Apps /Algorithms
  • Long running algorithms.
  • Highly Parallel algorithms (FFT is the best parallel algorithm I know of).
  • Responsive User Interface.
  • Async operations.
  • Windows Services (HTTP, Database).
types of threads
Types of Threads
  • Managed Threads / Regular Threads.
    • System.Threading.Thread() Class.
  • ThreadPool.
    • System.Threading.ThreadPool() Class.
create a thread
Create a Thread
  • New System.Threading.Thread


  • Some Methods:
    • Start(). Start processing on the Thread.
    • Sleep(). Wait X milliseconds.
    • Join(). Wait on a thread to finish.
    • Resume(). Start processing again.
    • Abort(). Quit the thread.
  • Normal is the default.
  • Threading priority tells the OS how much relative time to a thread.
performance monitor integration
Performance Monitor Integration
  • .NET CLR LocksAndThreads
  • Track the number of Threads.
uniprocessor threading hiccup
Uniprocessor Threading Hiccup
  • On a uniprocessor, the thread does not get any processor time until the main thread yields. Call Thread.Sleep(0) for a thread to immediately start after calling the Thread.Start().
example 1
Example #1
  • Create a thread and send a message to the UI.
passing parameters
Passing Parameters
  • In: Set a property of a class.
  • In: Use the constructor to set initial value.
  • Out: Raise an event and pass a param to that event.
example 2
Example #2
  • Instantiate a class.
  • Set a property of the class.
  • Thread runs.
  • Raises event.
  • Event is processed by the calling thread.
problem s
  • Debugging.
  • Management overhead.
  • Deadlocks.
  • Race Conditions.
  • Order of Execution.
  • What happens when Threads must access common variables?
  • Exclusively lock access to any common objects.
locking access to objects synchronization
Locking Access to Objects (Synchronization)
  • System.Threading.Monitor() Class.
  • Methods:
    • Enter(obj).
    • Exit(obj).
    • Wait, Pulse, PulseAll.
other ways to lock objects
Other Ways to Lock Objects
  • Synchronization Attribute.
  • Lock (C#) / SyncLock (VB).
  • ReaderWriterLock() Class. Designed for reads with a small number of writes.
  • Mutex. Works for threads and processes.
example 3
Example #3
  • Use the Monitor object to lock access to an object.
notes on the monitor object
Notes on the Monitor Object
  • Only works on Reference types. Value types are not exclusively locked.
  • The vbc and csc compilers put a try/catch/finally so that in the case of an error, the appropriate Exit() method is called.
managed thread recommendations
Managed ThreadRecommendations
  • Don't use Thread.Abort to terminate threads. Thread state is unknown.
  • Don't use Thread.Suspend and .Resume to synchronize threads. Use the appropriate objects.
  • Monitor.Enter and Monitor.Exit are both called.
  • Threads are great for tasks involving different resources.
  • Pool of threads.
  • Managed by the CLR.
  • Per Process.
  • Built into the CLR.
  • # of Threads dependent on CPU usage. 25 threads per CPU default.
  • Article on MSDN with ThreadPool guidelines.
of interest
Of Interest
  • WaitCallback.
  • QueueUserWorkItem.
  • Monitor the pool.
    • GetAvailableThreads(out int Wthrds, out int iCompPortThrds).
    • GetMaxThreads(out int Wthrds,out int iCompPortThrds).
threadpool worries
ThreadPool Worries
  • Don't do operations that are not guaranteed to complete.
  • Remember that the ThreadPool has a maximum number of threads.
personal experience overview of a windows service
Personal Experience:Overview of a Windows Service
  • Goal: Pull data from multiple sources.
  • Multi-threaded Windows Service.
  • Thread for each data source.
  • Little contention for resources.
  • Error processing is complicated.
things to look at last thoughts
Things to Look at / Last Thoughts
  • Windows Services.
  • EventLog.
  • Weak References.
  • Performance Monitor Integration.
  • Nothing wrong with Interop, if it will work for you.

Scalable Development, Inc.

Building systems today that perform tomorrow.

  • Scalable Development, Inc.
  • Consulting & Development Services.
  • http://www.scalabledevelopment.com
  • 865-693-3004.
  • [email protected]