wallace b mcclure scalable development inc
Download
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


  • 160 Views
  • 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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
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
Algorithms
  • 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

(AddressOf(method)).

  • 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.
priority
Priority
  • 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
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.
threadpool
ThreadPool
  • 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.
questions
Questions?

Scalable Development, Inc.

Building systems today that perform tomorrow.

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

END

ad