Presentation is loading. Please wait.

Presentation is loading. Please wait.

Overview of Threading with the.NET Framework  Wallace B. McClure  Scalable Development, Inc. Scalable Development, Inc. Building systems today that perform.

Similar presentations


Presentation on theme: "Overview of Threading with the.NET Framework  Wallace B. McClure  Scalable Development, Inc. Scalable Development, Inc. Building systems today that perform."— Presentation transcript:

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

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 Thread Recommendations  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 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.

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.  Consulting & Development Services.  http://www.scalabledevelopment.com http://www.scalabledevelopment.com  865-693-3004.  wallym@scalabledevelopment.com wallym@scalabledevelopment.com END Scalable Development, Inc. Building systems today that perform tomorrow.


Download ppt "Overview of Threading with the.NET Framework  Wallace B. McClure  Scalable Development, Inc. Scalable Development, Inc. Building systems today that perform."

Similar presentations


Ads by Google