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

1 / 30
About This Presentation
Title:

Overview of Threading with the .NET Framework

Description:

Dividing an application into 'threads' will not automatically make an application faster. ... What happens when Threads must access common variables? ... – PowerPoint PPT presentation

Number of Views:90
Avg rating:3.0/5.0
Slides: 31
Provided by: wallaceb7
Category:

less

Transcript and Presenter's Notes

Title: Overview of Threading with the .NET Framework


1
Overview of Threadingwith the .NET Framework
Scalable Development, Inc. Building systems today
that perform tomorrow.
  • Wallace B. McClure
  • Scalable Development, Inc.

2
.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

3
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.

4
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.

5
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.

6
Serial Processes
  • Serial. One step within the algorithm must be
    completed before the next step.

7
Parallel Processes
  • Parallel. Steps within the algorithm are not
    dependent on other steps to be completed first.

8
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?

9
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).

10
Types of Threads
  • Managed Threads / Regular Threads.
  • System.Threading.Thread() Class.
  • ThreadPool.
  • System.Threading.ThreadPool() Class.

11
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.

12
Priority
  • Normal is the default.
  • Threading priority tells the OS how much relative
    time to a thread.

13
Performance Monitor Integration
  • .NET CLR LocksAndThreads
  • Track the number of Threads.

14
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().

15
Example 1
  • Create a thread and send a message to the UI.

16
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.

17
Example 2
  • Instantiate a class.
  • Set a property of the class.
  • Thread runs.
  • Raises event.
  • Event is processed by the calling thread.

18
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.

19
Locking Access to Objects (Synchronization)
  • System.Threading.Monitor() Class.
  • Methods
  • Enter(obj).
  • Exit(obj).
  • Wait, Pulse, PulseAll.

20
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.

21
Example 3
  • Use the Monitor object to lock access to an
    object.

22
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.

23
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.

24
Overview of the Thread Pool
25
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.

26
Of Interest
  • WaitCallback.
  • QueueUserWorkItem.
  • Monitor the pool.
  • GetAvailableThreads(out int Wthrds, out int
    iCompPortThrds).
  • GetMaxThreads(out int Wthrds,out int
    iCompPortThrds).

27
ThreadPool Worries
  • Don't do operations that are not guaranteed to
    complete.
  • Remember that the ThreadPool has a maximum number
    of threads.

28
Personal ExperienceOverview 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.

29
Things to Look at / Last Thoughts
  • Windows Services.
  • EventLog.
  • Weak References.
  • Performance Monitor Integration.
  • Nothing wrong with Interop, if it will work for
    you.

30
Questions?
Scalable Development, Inc. Building systems today
that perform tomorrow.
  • Scalable Development, Inc.
  • Consulting Development Services.
  • http//www.scalabledevelopment.com
  • 865-693-3004.
  • wallym_at_scalabledevelopment.com

END
Write a Comment
User Comments (0)
About PowerShow.com