Presentation is loading. Please wait.

Presentation is loading. Please wait.

Multithreading Dr. John P. Abraham.

Similar presentations


Presentation on theme: "Multithreading Dr. John P. Abraham."— Presentation transcript:

1 Multithreading Dr. John P. Abraham

2 Multithreading Parallel execution System.threading
Downloading a video file and playing Checking spelling while typing System.threading Thread class and monitor class

3 Thread States Threadstart creates the thread object in Unstarted state
Thread’s start method is called to make it Running State Now this thread can run concurrently with other threads running. Running thread can enter Stopped State when the threadstart terminates or by calling the abort method

4 Other thread states If a thread is not given a CPU it is in the Blocked state. Example when the thread issues an I/O or during sychronization. When finished it can return to running state. WaitSleepJoin state. Thread encounters code segment it can’t execute yet. The thread issues a wait to the monitor. Another thread can invoke the monitor method pulse or pulse all, to return the thread to running state. The sleep method can place the thread in waitSleepJoin state. Suspend works similar the wait SleepJoin state.

5 Thread Priorities and scheduling
Every thread is given a priority between lowest to highest. Timeslicing is used among threads of equal priority.

6 Creating thread class Imports System.threading
Public Class threadClass Private sleeptime As Integer Private Shared randomobject As New Random Public Sub New() sleeptime = randomobject.Next(5001) End Sub Public Sub report() Dim current As Thread = Thread.CurrentThread Console.WriteLine(Now.Second & ":" & Now.Millisecond & " " & current.Name & " going to sleep for " & sleeptime) Thread.Sleep(sleeptime) Console.WriteLine(Now.Second & ":" & Now.Millisecond & " " & current.Name & " done sleeping ") End Class

7 Thread tester Imports System.Threading Module threadTester Sub main()
Dim messenger1 As New threadClass Dim messenger2 As New threadClass Dim messenger3 As New threadClass Dim thread1 As New Thread(AddressOf messenger1.report) Dim thread2 As New Thread(AddressOf messenger2.report) Dim thread3 As New Thread(AddressOf messenger3.report) thread1.Name = "thread1" thread2.Name = "thread2" thread3.Name = "thread3" Console.WriteLine(Now.Second & ":" & Now.Millisecond & " Starting threads ") thread1.Start() thread2.Start() thread3.Start() Console.WriteLine(Now.Second & ":" & Now.Millisecond & " Threads started" & vbCrLf) End Sub End Module

8 Explanation Each thread displays a message indicating that it is going to sleep for a random interval from 0 to 5000 milliseconds. When it awakens it displays its name, done sleeping and terminates.

9 Class monitor Multiple threads may access shared memory
Reading is no problem If memory is changed (writing) data corruption can occur. Solved by giving one thread at a time exclusive access to shared memory. Other threads are kept waiting. This is called mutex or thread synchronization. In VB thread Monitor performs sychronization.

10 Acquiring the lock When a thread needs exclusive access of shared object, it invokes the monitor method Enter to acquire the lock on the data object. Each object has SyncBlock that maintains the state of the object’s lock. The monitor checks this state to determine the state of the lock.


Download ppt "Multithreading Dr. John P. Abraham."

Similar presentations


Ads by Google