Escolar Documentos
Profissional Documentos
Cultura Documentos
Multithreading
Task level parallelism
By
Apex TG India Pvt Ltd
http://www.apextgi.in
1
COUNTER
COUNTER 1
Q
Please
Multiplethreaded
Threads of Process
Execution
OS:
Multi-Processing, Multi-Threaded
Threaded Libraries, Multi-threaded I/O
Application
Application
Application
Application
CPU
CPU
CPU
Better Response Times in
Multiple Application
Environments
CPU
CPU
CPU
Multi-threading, continued...
Multi-threaded OS enables parallel, scalable I/O
Application
Application
Application
OS Kernel
CPU
CPU
CPU
STACK
DATA
DATA
TEXT
TEXT
processes
processes
STACK
Shared
Shared
memory
memory
segments,
segments,
pipes,
pipes,open
open
files
filesor
or
mmapd
mmapd
files
files
Shared
SharedMemory
Memory
maintained
maintainedby
bykernel
kernel
DATA
DATA
TEXT
TEXT
processes
processes
6
Registers
Registers
Status
StatusWord
Word
Local state
Global/ shared state
PC
Hard/Software Context
Program
ProgramCounter
Counter
Running
Thread Object
7
THREAD
THREAD
STACK
STACK
SHARED
SHARED
MEMORY
MEMORY
THREAD
THREAD
DATA
DATA
THREAD
THREAD
TEXT
TEXT
Independent executables
All threads are parts of a process hence communication
easier and simpler.
Levels
Levels of
of Parallelism
Parallelism
Task
Taski-l
i-l
func1
func1( () )
{{
....
....
....
....
}}
Task
Task
Control
Control
Data
Data
MultipleIssue
Issue
Multiple
++
Task
Taskii
func2
func2( () )
{{
....
....
....
....
}}
aa( (11)=..
)=..
bb( (11)=..
)=..
xx
Task
Taski+1
i+1
func3
func3( () )
{{
....
....
....
....
}}
aa( (22)=..
)=..
bb( (22)=..
)=..
Load
Load
Code-Granularity
Code-Granularity
Code
CodeItem
Item
Large
Largegrain
grain
(task
(tasklevel)
level)
Program
Program
Medium
Mediumgrain
grain
(control
(controllevel)
level)
Function
Function(thread)
(thread)
Fine
Finegrain
grain
(data
(datalevel)
level)
Loop
Loop
Very
Veryfine
finegrain
grain
(multiple
(multipleissue)
issue)
With
Withhardware
hardware
Java
Multithreading in Java
10
Java - An Introduction
C++
Yes
Yes
Yes
Yes
Both
Poor
No
Yes
Yes
Objective
C
Yes
Yes
Yes
Yes
Both
Poor
Yes
No
Yes
Ada
Yes
No
No
Yes
Early
Difficult
No
Yes
Limited
Java
Yes
Yes
No
Yes
Late
Yes
Yes
No
Yes
12
13
Java Integrates
Power of Compiled Languages
and
Flexibility of Interpreted Languages
14
Threads
class MyThread
{
public void
{
// thread
}
}
Creating thread:
MyThread thr1 =
Start Execution:
thr1.start();
extends Thread
run()
body of execution
new MyThread();
16
17
name);
18
19
20
21
22
Thread Priority...
// HiLoPri.java
class Clicker implements Runnable {
int click = 0;
private Thread t;
private boolean running = true;
public Clicker(int p)
{
t = new Thread(this);
t.setPriority(p);
}
public void run()
{
while(running)
click++;
}
public void start()
{
t.start();
}
public void stop()
{
running = false;
}
}
23
...Thread Priority
class HiLoPri
{
public static void main(String args[])
{
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
Clicker Hi = new Clicker(Thread.NORM_PRIORITY+2);
Clicker Lo = new Clicker(Thread.NORM_PRIORITY-2);
Lo.start();
Hi.start();
try
{
Thread.sleep(10000);
}
catch (Exception e)
{
}
Lo.stop();
Hi.stop();
System.out.println(Lo.click + " vs. " + Hi.click);
}
}
Run1: (on Solaris)
0 vs. 956228
Run2: (Window 95)
304300 vs. 4066666
24
26