SlideShare a Scribd company logo
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
1
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 10: Threading
• Khai báo và khởi tạo tiến trình
• Lậ t ì h khô đồ bộ• Lập trình không đồng bộ
2
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Threading
• Threading là một khái niệm quan trọng trong phát
triển phần mềm, hỗ trợ thực hiện nhiều tác vụ tại
ù ột thời điểcùng một thời điểm.
• Hầu hết các tác vụ đều có thời gian chết (downtime),
với threading, ta có thể cho bộ xử lý tiếp tục thựcvới threading, ta có thể cho bộ xử lý tiếp tục thực
hiện công việc trong suốt thời gian đó.
• Lớp Thread được dùng để tạo và thực thi các tiến
trình.
3
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Các thuộc tính và phương thức của tiến trình
ế• Các thao tác trên tiến trình
4
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Các thuộc tính và phương thức của tiến trình• Các thuộc tính và phương thức của tiến trình
− Các thuộc tính
• IsAlive• IsAlive
• IsBackground
• IsThreadPoolThread
• ManagedThread
• Name
• Priority
• ThreadState
5
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Các thuộc tính và phương thức của tiến trình
− Các thuộc tính tĩnh (static properties)Các thuộc tính tĩnh (static properties)
• CurrentContext
• CurrentPrincipalp
• CurrentThread
6
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Các thuộc tính và phương thức của tiến trình
− Các phương thứcCác phương thức
• Abort
• Interrupp
• Join
• Resume
• Start
• Suspend
7
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Các thuộc tính và phương thức của tiến trình• Các thuộc tính và phương thức của tiến trình
− Các phương thức tĩnh (static methods)
• BeginCriticalRegion• BeginCriticalRegion
• EndCriticalRegion
• GetDomainGet o a
• GetDomainID
• ResetAbort
• Sleep
• SpinWait
• V l til R d
8
• VolatileRead
• VolatileWrite
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Các thao tác trên tiến trình
− Khởi tạo tiến trìnhKhởi tạo tiến trình
− Thực thi tiến trình
− Ghép nối các tiến trình− Ghép nối các tiến trình
− Tạm dừng và hủy bỏ vĩnh viễn
9
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Khởi tạo tiến trình
− Trong NET Framework namespaceTrong .NET Framework, namespace
System.Threading chứa các kiểu được dùng để tạo
và quản lý đa tiến trình trong ứng dụng
ế− Khởi tạo tiến trình:
• Tạo phương thức không tham số, không kiểu dữ liệu trả
vềvề
• Tạo ủy nhiệm hàm ThreadStart với phương thức vừa tạo
• Tạo Thread mới với ủy nhiệm hàm ThreadStart vừa tạo
10
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Thực thi tiến trình
− Tiến trình được khởi tạo sẽ không tự động thực thiTiến trình được khởi tạo sẽ không tự động thực thi.
− Gọi phương thức Start để thực thi tiến trình
11
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
D khởi à• Demo khởi tạo và
thực thi tiến trình:
• T ột h
Static void SimpleWork(){
Console.WriteLine(“Thread: {0}
• Tạo một phương
thức không tham số,
không trả về dữ liệu.
”,Thread.CurrentThread.Manag
edThreadID);
}
• Tạo ủy nhiệm
ThreadStart
• T Th d ới
ThreadStart op=new
ThreadStart(SimpleWork);
Th d Th d Th d( )• Tạo Thread mới
• Gọi phương thức
Start để thực thi tiến
Thread myThread=new Thread(op);
myThread.Start();
12
Start để thực thi tiến
trình mới.
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
ế• Thực thi đa tiến trình
− Điểm mạnh của Thread là hỗ trợ xử lý đa tiến trình tại
cùng 1 thời điểmcùng 1 thời điểm.
− Ta có thể sửa lại đoạn code trên để hỗ trợ xử lý đa tiến
trình như sau:
ThreadStart op=new TharedStart();
for (int i=0;i<5;i++){
Thread myThread=new Thread(op);
myThread.Start();
}
13
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Ghép nối các tiến trình• Ghép nối các tiến trình
− Khi khối lượng công
việc và thời gian xử lý
ThreadStart op=new
ThreadStart(SimpleWork);
Thread[] myThreads=new Thread[5];
việc và thời gian xử lý
của mỗi tiến trình tăng,
ta sẽ cần tiến trình for (int i=0;i<5;i++){
chính (main thread) chờ
cho đến khi xử lý của
tiến trình đ ợc hoàn tất
myThreads[i]=new Thread(op);
myThreads[i].Start();
}tiến trình được hoàn tất
thông qua sử dụng
phương thức
}
foreach (Thread t in myThreads){
t.Join();
14
p g
Thread.Join().
();
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Threading priority
− Hỗ trợ gán/ lấy độ ưu tiên của tiến trình thông qua enumg y g q
ThreadingPriority.
− Các giá trị của ThreadingPriority
• HighestHighest
• AboveNormal
• Normal
• BelowNormal
• Lowest
− Thường sử dụng giá trị default là Normal
15
Thường sử dụng giá trị default là Normal
− Cân nhắc khi thay đổi độ ưu tiên của tiến trình
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Tạm dừng và loại bỏ vĩnh viễnTạm dừng và loại bỏ vĩnh viễn
− .NET framework tự động dừng và giải phóng tiến trình khi xử
lý hoàn tất.
− Dùng phương thức Thread.Abort() để dừng tiến trình khi có
nhu cầu.
Thread myThread=new Thread(new ThreadStart(AbortThisThread));
myHtread.Start();
myThread.Abort();
static void AbortThisThread(){
Có an
toàn
không ?static void AbortThisThread(){
SomeClass.IsValid=true;
SomeClase.IsComplete=true;
không ?
16
SomeClass.WriteToConsole();
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• Tạm dừng và loại bỏ vĩnh viễn
− Dừng tiến trình một cách an toàn : tạo lập critical region vớig p g
BeginCriticalRegion và EndReticalRegion.
static void AbortThisThread(){
Thread.BeginCriticalRegion();
SomeClass.IsValid=true;
SomeClase.IsComplete=true;
Critical
Region
SomeClase.IsComplete true;
Thread.EndCriticalRegion();
SomeClass.WriteToConsole();
17
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Khai báo và khởi tạo tiến trình
• T dừ à l i bỏ ĩ h iễ
Không dùng
• Tạm dừng và loại bỏ vĩnh viễn
− So sánh giữa có sử dụng và không sử dụng critical region
E
Không dùng
critical
region
Start Do work More work
Even
more work
Done
Thread abort Aborted
Even
dùng critical
region
Start Do work More work
Even
more work
Done
18
Thread abort Aborted
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Hỗ trợ từng phần của chương trình được thực thi
trên nhiều tiến trình riêng biệt, tương tự mô hình
A h P i M d l (APM)Asynchronous Programming Model (APM).
• .NET framework hỗ trợ APM qua nhiều lớp có cung
cấp phương thức BeginXXX và EndXXXcấp phương thức BeginXXX và EndXXX
• Ví dụ: lớp FileStream có phương thức Read đọc dữ
liệu từ stream, nó cũng cung cấp phương thức
ỗBeginRead và EndRead hỗ trợ mô hình APM.
19
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Ví d• Ví dụ:
byte[] buffer = new byte[100];
FileStream strm = new FileStream(“c:/aaa.txt”, FileMode.Open,( , p ,
FileAccess.Read, FileShare.Read, 1024, FileOptions.Asynchronous);
// gọi xử lý không đồng bộ
IAsyncResult result = strm.BeginRead(buffer, 0, buffer.Length, null, null);y g ( , , g , , );
// tiến hành xử lý khác trong khi chờ
// EndRead sẽ bị khóa cho đến khi xử lý không đồng bộ hoàn thành
int numBytes = strm EndRead(result);int numBytes = strm.EndRead(result);
strm.Close();
Console.WriteLine("Read {0}",numBytes);
20
Console.WriteLine(BitConverter.ToString(buffer));
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Cần có cách thực thi tác vụ không đồng bộ và biết khi
nào/ nơi nào sẽ gọi phương thức EndXXX.
• Rendezvous Model : có 3 cách mà APM sử dụng để
xử lý khi kết thúc lời gọi phương thức không đồng bộ
W it U til D− Wait-Until-Done
− Pooling
− CallbackCallback
21
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Wait-Until-Done Model:
− Cho phép bắt đầu lời gọi phương thức không đồng bộCho phép bắt đầu lời gọi phương thức không đồng bộ
và thực thi các tác vụ khác.
− Lời gọi kết thúc phương thức không đồng bộ sẽ bị lock
ế ố ấ
g p g g g
cho đến khi phương thức không đống bộ hoàn tất xử
lý.
22
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• P lli M d l• Polling Model
− Tương tự Wait-Until-Done, nhưng có thăm dò
IAsyncResult để biết xử lý đã hoàn tất chưaIAsyncResult để biết xử lý đã hoàn tất chưa
// gọi xử lý không đồng bộ
IAsyncResult result = strm.BeginRead(buffer, 0, buffer.Length, null, null);
// thăm dò xử lý hoàn tất chưa ?
While (!result.IsCompleted){
// xử lý khác khi chưa kết thúc lời gọi phương thức không đồng bộ// xử lý khác khi chưa kết thúc lời gọi phương thức không đồng bộ
Thread.Sleep(100);
}
// E dR d ẽ bị khó h đế khi ử lý khô đồ bộ h à thà h
23
// EndRead sẽ bị khóa cho đến khi xử lý không đồng bộ hoàn thành
int numBytes = strm.EndRead(result);
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• C llb k M d l• Callback Model
− Yêu cầu ta chỉ định phương thức callback và bất kỳ
trạng thái nào dùng trong phương thức callback đểtrạng thái nào dùng trong phương thức callback để
kết thúc lời gọi phương thức không đồng bộ.
static void TestCallbackAPM(){ static void CompleteRead(IAsyncResult r){
string filename=“…”;
FileStream strm=new ….;
// thực hiện lời gọi không đồng bộ
Console.WriteLine(“Read
Completed”);
FileStream strm=(FileStream)
r AsyncState;
IAsyncResult
result=strm.BeginRead(buffer,0,buf
fer.Length,new
AsyncCallBack(CompleteRead),str
r.AsyncState;
int numBytes=strm.EndRead(r);
strm.Close();
C l W it Li ( )
24
AsyncCallBack(CompleteRead),str
m);
}
Console.WriteLine(…..);
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Ngoại lệ và APM• Ngoại lệ và APM
− Khi dùng APM, các tác vụ có thể phát sinh các ngoại
lệ trong quá trình xử lýlệ trong quá trình xử lý
− Các ngoại lệ thường phát sinh trong quá trình gọi
phương thức EndXXX.
int numBytes=0;
try{
numBytes=strm EndRead(result);numBytes=strm.EndRead(result);
}
Catch (IOException){
25
Console.WriteLine(“An IO Exception occurred”);
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• ThreadPool
• Timer• Timer
26
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• ThreadPool
− Trong nhiều trường hợp tạo tiến trình riêng để thực thiTrong nhiều trường hợp, tạo tiến trình riêng để thực thi
những xử lý không đồng bộ là không cần thiết
− .NET hỗ trợ các built-in thread pool có thể dùng trong
ề ể ầ ế
p g g
nhiều trường hợp mà ta sẽ có thể cần phải tạo tiến
trình xử lý của riêng mình.
Các đặc điểm− Các đặc điểm
• ThreadPool thực thi nhanh
• Điều khiển số luồng thực thi tại cùng 1 thời điểm
27
Điều khiển số luồng thực thi tại cùng 1 thời điểm
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Sử dụng ThreadPoolSử dụng ThreadPool
− Dùng phương thức QueueUserWorkItem của ThreadPool
để tạo và điều khiển các tiến trình
static void WorkWithParameter(object o){
for (int i=0;i<10;i++){
Console.WriteLine(“{0}:Console.WriteLine( {0}:
{1}”,o.ToString(),Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(10);
}}
}
WaitCallback workItem=new WaitCallback(WorkWithParameter);
if (ThreadPool QueueUserWorkItem(workItem ”ThreadPooled”);
28
if (ThreadPool.QueueUserWorkItem(workItem,”ThreadPooled”);
Console.WriteLine(“Could not queue item”);
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Giới hạn số tiến trình trong ThreadPool
− ThreadPool cho phép chỉ định số lượng tiến trình tốiThreadPool cho phép chỉ định số lượng tiến trình tối
đa và tối thiểu
− 2 trường hợp cần thay đổi số lượng tiến trình:g p y g
• Starvation
• Startup thread speed
− Thay đổi chỉ ảnh hưởng đến tiến trình hiện hành
29
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Giới hạn số tiến trình trong ThreadPool
− Starvation : xảy ra khi ứng dụng có quá nhiều tiến
ủtrình, vượt quá giới hạn của ThreadPool.
• Dùng phương thức ThreadPool.SetMaxThreads để thay
đổi số lượng tiến trình giới hạn.ợ g g ạ
int threads;
int completionPorts;int completionPorts;
ThreadPool.GetMaxThreads(out threads,out completionPorts);
ThreadPool.SetMaxThreads(threads+10,completionPorts+100);
30
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
• Timer
− Lớp Timer hỗ trợ thực thi một phương thức được thamLớp Timer hỗ trợ thực thi một phương thức được tham
chiếu bởi ủy nhiệm TimerCallback tại một/ nhiều thời
điểm xác định một cách không đồng bộ.
ế− Phương thức được tham chiếu được thực thi như một
tiến trình trong ThreadPool.
31
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Lập trình không đồng bộ
T Ti khởi độ h thứ
• Sử dụng Timer
− Khai báo Timer chỉ định
Tạo Timer khởi động phương thức
TimerTick mỗi giây, khởi động
ngay lập tức :
Khai báo Timer, chỉ định
một phương thức cho ủy
nhiệm TimerCallback thực
thi khi khởi động Timer
static void TimerTick(object o){
Console.WriteLine(“Tick :
{0}”,DateTime.Now.ToLongTim
thi khi khởi động Timer.
− Các giá trị có thể thay đổi:
• Thời gian chờ đến khi
{ } , g
eString());
}
TimerCallback tc=newThời gian chờ đến khi
khởi động Timer.
• Khoảng thời gian giữa các
lần khởi động
TimerCallback tc=new
TimerCallback(TimerTick);
Timer tm=new Timer(tc ,nothing ,
0 1000 )
32
lần khởi động. 0 ,1000 );
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
End
Thanks
33

More Related Content

Viewers also liked

Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
MasterCode.vn
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
MasterCode.vn
 
Threading in c#
Threading in c#Threading in c#
Threading in c#
gohsiauken
 
Up app to store(windows 8.1 và windows phone app)
Up app to store(windows 8.1 và windows  phone app)Up app to store(windows 8.1 và windows  phone app)
Up app to store(windows 8.1 và windows phone app)
NamPhmHoi1
 
Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Kuli An
 
[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case
Le Vu Trung Thanh
 
TÌM HIỂU VÀ TRIỂN KHAI VIRTUAL SAN TRONG VMWARE SERVER
TÌM HIỂU VÀ TRIỂN KHAI VIRTUAL SAN TRONG VMWARE SERVERTÌM HIỂU VÀ TRIỂN KHAI VIRTUAL SAN TRONG VMWARE SERVER
TÌM HIỂU VÀ TRIỂN KHAI VIRTUAL SAN TRONG VMWARE SERVER
laonap166
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
An Nguyen
 
C# Delegates and Event Handling
C# Delegates and Event HandlingC# Delegates and Event Handling
C# Delegates and Event HandlingJussi Pohjolainen
 
Delegates and events
Delegates and events   Delegates and events
Delegates and events
Gayathri Ganesh
 
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...MasterCode.vn
 
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
MasterCode.vn
 
2 whats-new-in-ios7-m2-xcode-slides
2 whats-new-in-ios7-m2-xcode-slides2 whats-new-in-ios7-m2-xcode-slides
2 whats-new-in-ios7-m2-xcode-slidesMasterCode.vn
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Bài 3 - Điều khiển kiểm tra dữ liệu
Bài 3 - Điều khiển kiểm tra dữ liệuBài 3 - Điều khiển kiểm tra dữ liệu
Bài 3 - Điều khiển kiểm tra dữ liệu
MasterCode.vn
 
J query khtn
J query khtnJ query khtn
J query khtn
luckywhite
 

Viewers also liked (18)

Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
 
Lập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vnLập trình sáng tạo creative computing textbook mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
 
Threading in c#
Threading in c#Threading in c#
Threading in c#
 
Up app to store(windows 8.1 và windows phone app)
Up app to store(windows 8.1 và windows  phone app)Up app to store(windows 8.1 và windows  phone app)
Up app to store(windows 8.1 và windows phone app)
 
Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#Chuan viet code va thiet ke giao dien trong C#
Chuan viet code va thiet ke giao dien trong C#
 
[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case[Seminar] Hướng dẫn viết test case
[Seminar] Hướng dẫn viết test case
 
TÌM HIỂU VÀ TRIỂN KHAI VIRTUAL SAN TRONG VMWARE SERVER
TÌM HIỂU VÀ TRIỂN KHAI VIRTUAL SAN TRONG VMWARE SERVERTÌM HIỂU VÀ TRIỂN KHAI VIRTUAL SAN TRONG VMWARE SERVER
TÌM HIỂU VÀ TRIỂN KHAI VIRTUAL SAN TRONG VMWARE SERVER
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
 
BTL Lập trình C#
BTL Lập trình C#BTL Lập trình C#
BTL Lập trình C#
 
01 tester training - overview
01  tester training - overview01  tester training - overview
01 tester training - overview
 
C# Delegates and Event Handling
C# Delegates and Event HandlingC# Delegates and Event Handling
C# Delegates and Event Handling
 
Delegates and events
Delegates and events   Delegates and events
Delegates and events
 
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
 
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#
 
2 whats-new-in-ios7-m2-xcode-slides
2 whats-new-in-ios7-m2-xcode-slides2 whats-new-in-ios7-m2-xcode-slides
2 whats-new-in-ios7-m2-xcode-slides
 
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vnPdfbài 2 bo mạch chủ (main)   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
 
Bài 3 - Điều khiển kiểm tra dữ liệu
Bài 3 - Điều khiển kiểm tra dữ liệuBài 3 - Điều khiển kiểm tra dữ liệu
Bài 3 - Điều khiển kiểm tra dữ liệu
 
J query khtn
J query khtnJ query khtn
J query khtn
 

Similar to Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#

#Week03-Chapter3 2023.pdf
#Week03-Chapter3 2023.pdf#Week03-Chapter3 2023.pdf
#Week03-Chapter3 2023.pdf
tangmyhan
 
Lập Trình an toàn - Secure programming
Lập Trình an toàn - Secure programmingLập Trình an toàn - Secure programming
Lập Trình an toàn - Secure programming
beatmaking
 
Baigiang01 mo dau
Baigiang01 mo dauBaigiang01 mo dau
Thiet ke-he-thong-nhung -chuong-5-he-dieu-hanh-thoi-gian-thuc - [cuuduongthan...
Thiet ke-he-thong-nhung -chuong-5-he-dieu-hanh-thoi-gian-thuc - [cuuduongthan...Thiet ke-he-thong-nhung -chuong-5-he-dieu-hanh-thoi-gian-thuc - [cuuduongthan...
Thiet ke-he-thong-nhung -chuong-5-he-dieu-hanh-thoi-gian-thuc - [cuuduongthan...
Tan Ngoc
 
Septeniinternalseminar 20140706softwaretesting-truonganhhoangtalk-final-14070...
Septeniinternalseminar 20140706softwaretesting-truonganhhoangtalk-final-14070...Septeniinternalseminar 20140706softwaretesting-truonganhhoangtalk-final-14070...
Septeniinternalseminar 20140706softwaretesting-truonganhhoangtalk-final-14070...Working in Japan
 
Pbc day-01-introduction
Pbc day-01-introductionPbc day-01-introduction
Pbc day-01-introduction
Khánh Nguyễn
 
Linq net
Linq net Linq net
Linq net
NguynSang29
 
Qtu.vn sql - chuong 7
Qtu.vn  sql - chuong 7Qtu.vn  sql - chuong 7
Qtu.vn sql - chuong 7Hoang le Minh
 
Oop unit 10 ngoại lệ
Oop unit 10 ngoại lệOop unit 10 ngoại lệ
Oop unit 10 ngoại lệ
Tráng Hà Viết
 
OOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfOOP_02_Java can ban.pdf
OOP_02_Java can ban.pdf
ssuserd01a5c
 
Slide py-sys-devops-final-v1
Slide py-sys-devops-final-v1Slide py-sys-devops-final-v1
Slide py-sys-devops-final-v1Công TÔ
 
[Duong tran] shared_variable
[Duong tran] shared_variable[Duong tran] shared_variable
[Duong tran] shared_variable
Duong Tran
 
How to write good code
How to write good code How to write good code
How to write good code
Minh Hoang
 

Similar to Bài 10 - Threading - Nền tảng lập trình ứng dụng với C# (14)

#Week03-Chapter3 2023.pdf
#Week03-Chapter3 2023.pdf#Week03-Chapter3 2023.pdf
#Week03-Chapter3 2023.pdf
 
Lập Trình an toàn - Secure programming
Lập Trình an toàn - Secure programmingLập Trình an toàn - Secure programming
Lập Trình an toàn - Secure programming
 
Baigiang01 mo dau
Baigiang01 mo dauBaigiang01 mo dau
Baigiang01 mo dau
 
Thiet ke-he-thong-nhung -chuong-5-he-dieu-hanh-thoi-gian-thuc - [cuuduongthan...
Thiet ke-he-thong-nhung -chuong-5-he-dieu-hanh-thoi-gian-thuc - [cuuduongthan...Thiet ke-he-thong-nhung -chuong-5-he-dieu-hanh-thoi-gian-thuc - [cuuduongthan...
Thiet ke-he-thong-nhung -chuong-5-he-dieu-hanh-thoi-gian-thuc - [cuuduongthan...
 
6. javascript basic
6. javascript basic6. javascript basic
6. javascript basic
 
Septeniinternalseminar 20140706softwaretesting-truonganhhoangtalk-final-14070...
Septeniinternalseminar 20140706softwaretesting-truonganhhoangtalk-final-14070...Septeniinternalseminar 20140706softwaretesting-truonganhhoangtalk-final-14070...
Septeniinternalseminar 20140706softwaretesting-truonganhhoangtalk-final-14070...
 
Pbc day-01-introduction
Pbc day-01-introductionPbc day-01-introduction
Pbc day-01-introduction
 
Linq net
Linq net Linq net
Linq net
 
Qtu.vn sql - chuong 7
Qtu.vn  sql - chuong 7Qtu.vn  sql - chuong 7
Qtu.vn sql - chuong 7
 
Oop unit 10 ngoại lệ
Oop unit 10 ngoại lệOop unit 10 ngoại lệ
Oop unit 10 ngoại lệ
 
OOP_02_Java can ban.pdf
OOP_02_Java can ban.pdfOOP_02_Java can ban.pdf
OOP_02_Java can ban.pdf
 
Slide py-sys-devops-final-v1
Slide py-sys-devops-final-v1Slide py-sys-devops-final-v1
Slide py-sys-devops-final-v1
 
[Duong tran] shared_variable
[Duong tran] shared_variable[Duong tran] shared_variable
[Duong tran] shared_variable
 
How to write good code
How to write good code How to write good code
How to write good code
 

More from MasterCode.vn

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
MasterCode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vn
MasterCode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vn
MasterCode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
MasterCode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vn
MasterCode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
MasterCode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
MasterCode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
MasterCode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
MasterCode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
MasterCode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
MasterCode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
MasterCode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
MasterCode.vn
 
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
MasterCode.vn
 
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
MasterCode.vn
 

More from MasterCode.vn (20)

Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vnPd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
 
Why apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vnWhy apps-succeed-wpr-mastercode.vn
Why apps-succeed-wpr-mastercode.vn
 
Dzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vnDzone performancemonitoring2016-mastercode.vn
Dzone performancemonitoring2016-mastercode.vn
 
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vnGoogle công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
 
Nghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vnNghiên cứu về khách hàng mastercode.vn
Nghiên cứu về khách hàng mastercode.vn
 
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vnPd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
 
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vnPd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
 
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vnPdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
 
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vnPd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
 
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vnPd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
 
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vnPd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
 
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vnPdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
 
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vnPdfbài 7 máy tính xác tay và máy in   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vnPdfbài 6 bảo trì máy tính   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vnPdfbài 5 bảo trì và tối ưu windows   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vnPdfbài 4 ổ cứng hard drive   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vnPdfbài 3 cpu và ram   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
 
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vnPdfbài 1 giới thiệu chung về phần cứng   bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
 
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
Pdf bai 7 làm việc với truy vấn nâng cao-slide 07-quan tri csdl voi access-ma...
 
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
 

Bài 10 - Threading - Nền tảng lập trình ứng dụng với C#

  • 1. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC 1
  • 2. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Bài 10: Threading • Khai báo và khởi tạo tiến trình • Lậ t ì h khô đồ bộ• Lập trình không đồng bộ 2
  • 3. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Threading • Threading là một khái niệm quan trọng trong phát triển phần mềm, hỗ trợ thực hiện nhiều tác vụ tại ù ột thời điểcùng một thời điểm. • Hầu hết các tác vụ đều có thời gian chết (downtime), với threading, ta có thể cho bộ xử lý tiếp tục thựcvới threading, ta có thể cho bộ xử lý tiếp tục thực hiện công việc trong suốt thời gian đó. • Lớp Thread được dùng để tạo và thực thi các tiến trình. 3
  • 4. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Các thuộc tính và phương thức của tiến trình ế• Các thao tác trên tiến trình 4
  • 5. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Các thuộc tính và phương thức của tiến trình• Các thuộc tính và phương thức của tiến trình − Các thuộc tính • IsAlive• IsAlive • IsBackground • IsThreadPoolThread • ManagedThread • Name • Priority • ThreadState 5
  • 6. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Các thuộc tính và phương thức của tiến trình − Các thuộc tính tĩnh (static properties)Các thuộc tính tĩnh (static properties) • CurrentContext • CurrentPrincipalp • CurrentThread 6
  • 7. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Các thuộc tính và phương thức của tiến trình − Các phương thứcCác phương thức • Abort • Interrupp • Join • Resume • Start • Suspend 7
  • 8. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Các thuộc tính và phương thức của tiến trình• Các thuộc tính và phương thức của tiến trình − Các phương thức tĩnh (static methods) • BeginCriticalRegion• BeginCriticalRegion • EndCriticalRegion • GetDomainGet o a • GetDomainID • ResetAbort • Sleep • SpinWait • V l til R d 8 • VolatileRead • VolatileWrite
  • 9. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Các thao tác trên tiến trình − Khởi tạo tiến trìnhKhởi tạo tiến trình − Thực thi tiến trình − Ghép nối các tiến trình− Ghép nối các tiến trình − Tạm dừng và hủy bỏ vĩnh viễn 9
  • 10. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Khởi tạo tiến trình − Trong NET Framework namespaceTrong .NET Framework, namespace System.Threading chứa các kiểu được dùng để tạo và quản lý đa tiến trình trong ứng dụng ế− Khởi tạo tiến trình: • Tạo phương thức không tham số, không kiểu dữ liệu trả vềvề • Tạo ủy nhiệm hàm ThreadStart với phương thức vừa tạo • Tạo Thread mới với ủy nhiệm hàm ThreadStart vừa tạo 10
  • 11. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Thực thi tiến trình − Tiến trình được khởi tạo sẽ không tự động thực thiTiến trình được khởi tạo sẽ không tự động thực thi. − Gọi phương thức Start để thực thi tiến trình 11
  • 12. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình D khởi à• Demo khởi tạo và thực thi tiến trình: • T ột h Static void SimpleWork(){ Console.WriteLine(“Thread: {0} • Tạo một phương thức không tham số, không trả về dữ liệu. ”,Thread.CurrentThread.Manag edThreadID); } • Tạo ủy nhiệm ThreadStart • T Th d ới ThreadStart op=new ThreadStart(SimpleWork); Th d Th d Th d( )• Tạo Thread mới • Gọi phương thức Start để thực thi tiến Thread myThread=new Thread(op); myThread.Start(); 12 Start để thực thi tiến trình mới.
  • 13. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình ế• Thực thi đa tiến trình − Điểm mạnh của Thread là hỗ trợ xử lý đa tiến trình tại cùng 1 thời điểmcùng 1 thời điểm. − Ta có thể sửa lại đoạn code trên để hỗ trợ xử lý đa tiến trình như sau: ThreadStart op=new TharedStart(); for (int i=0;i<5;i++){ Thread myThread=new Thread(op); myThread.Start(); } 13 }
  • 14. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Ghép nối các tiến trình• Ghép nối các tiến trình − Khi khối lượng công việc và thời gian xử lý ThreadStart op=new ThreadStart(SimpleWork); Thread[] myThreads=new Thread[5]; việc và thời gian xử lý của mỗi tiến trình tăng, ta sẽ cần tiến trình for (int i=0;i<5;i++){ chính (main thread) chờ cho đến khi xử lý của tiến trình đ ợc hoàn tất myThreads[i]=new Thread(op); myThreads[i].Start(); }tiến trình được hoàn tất thông qua sử dụng phương thức } foreach (Thread t in myThreads){ t.Join(); 14 p g Thread.Join(). (); }
  • 15. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Threading priority − Hỗ trợ gán/ lấy độ ưu tiên của tiến trình thông qua enumg y g q ThreadingPriority. − Các giá trị của ThreadingPriority • HighestHighest • AboveNormal • Normal • BelowNormal • Lowest − Thường sử dụng giá trị default là Normal 15 Thường sử dụng giá trị default là Normal − Cân nhắc khi thay đổi độ ưu tiên của tiến trình
  • 16. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Tạm dừng và loại bỏ vĩnh viễnTạm dừng và loại bỏ vĩnh viễn − .NET framework tự động dừng và giải phóng tiến trình khi xử lý hoàn tất. − Dùng phương thức Thread.Abort() để dừng tiến trình khi có nhu cầu. Thread myThread=new Thread(new ThreadStart(AbortThisThread)); myHtread.Start(); myThread.Abort(); static void AbortThisThread(){ Có an toàn không ?static void AbortThisThread(){ SomeClass.IsValid=true; SomeClase.IsComplete=true; không ? 16 SomeClass.WriteToConsole(); }
  • 17. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • Tạm dừng và loại bỏ vĩnh viễn − Dừng tiến trình một cách an toàn : tạo lập critical region vớig p g BeginCriticalRegion và EndReticalRegion. static void AbortThisThread(){ Thread.BeginCriticalRegion(); SomeClass.IsValid=true; SomeClase.IsComplete=true; Critical Region SomeClase.IsComplete true; Thread.EndCriticalRegion(); SomeClass.WriteToConsole(); 17 }
  • 18. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Khai báo và khởi tạo tiến trình • T dừ à l i bỏ ĩ h iễ Không dùng • Tạm dừng và loại bỏ vĩnh viễn − So sánh giữa có sử dụng và không sử dụng critical region E Không dùng critical region Start Do work More work Even more work Done Thread abort Aborted Even dùng critical region Start Do work More work Even more work Done 18 Thread abort Aborted
  • 19. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Hỗ trợ từng phần của chương trình được thực thi trên nhiều tiến trình riêng biệt, tương tự mô hình A h P i M d l (APM)Asynchronous Programming Model (APM). • .NET framework hỗ trợ APM qua nhiều lớp có cung cấp phương thức BeginXXX và EndXXXcấp phương thức BeginXXX và EndXXX • Ví dụ: lớp FileStream có phương thức Read đọc dữ liệu từ stream, nó cũng cung cấp phương thức ỗBeginRead và EndRead hỗ trợ mô hình APM. 19
  • 20. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Ví d• Ví dụ: byte[] buffer = new byte[100]; FileStream strm = new FileStream(“c:/aaa.txt”, FileMode.Open,( , p , FileAccess.Read, FileShare.Read, 1024, FileOptions.Asynchronous); // gọi xử lý không đồng bộ IAsyncResult result = strm.BeginRead(buffer, 0, buffer.Length, null, null);y g ( , , g , , ); // tiến hành xử lý khác trong khi chờ // EndRead sẽ bị khóa cho đến khi xử lý không đồng bộ hoàn thành int numBytes = strm EndRead(result);int numBytes = strm.EndRead(result); strm.Close(); Console.WriteLine("Read {0}",numBytes); 20 Console.WriteLine(BitConverter.ToString(buffer));
  • 21. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Cần có cách thực thi tác vụ không đồng bộ và biết khi nào/ nơi nào sẽ gọi phương thức EndXXX. • Rendezvous Model : có 3 cách mà APM sử dụng để xử lý khi kết thúc lời gọi phương thức không đồng bộ W it U til D− Wait-Until-Done − Pooling − CallbackCallback 21
  • 22. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Wait-Until-Done Model: − Cho phép bắt đầu lời gọi phương thức không đồng bộCho phép bắt đầu lời gọi phương thức không đồng bộ và thực thi các tác vụ khác. − Lời gọi kết thúc phương thức không đồng bộ sẽ bị lock ế ố ấ g p g g g cho đến khi phương thức không đống bộ hoàn tất xử lý. 22
  • 23. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • P lli M d l• Polling Model − Tương tự Wait-Until-Done, nhưng có thăm dò IAsyncResult để biết xử lý đã hoàn tất chưaIAsyncResult để biết xử lý đã hoàn tất chưa // gọi xử lý không đồng bộ IAsyncResult result = strm.BeginRead(buffer, 0, buffer.Length, null, null); // thăm dò xử lý hoàn tất chưa ? While (!result.IsCompleted){ // xử lý khác khi chưa kết thúc lời gọi phương thức không đồng bộ// xử lý khác khi chưa kết thúc lời gọi phương thức không đồng bộ Thread.Sleep(100); } // E dR d ẽ bị khó h đế khi ử lý khô đồ bộ h à thà h 23 // EndRead sẽ bị khóa cho đến khi xử lý không đồng bộ hoàn thành int numBytes = strm.EndRead(result);
  • 24. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • C llb k M d l• Callback Model − Yêu cầu ta chỉ định phương thức callback và bất kỳ trạng thái nào dùng trong phương thức callback đểtrạng thái nào dùng trong phương thức callback để kết thúc lời gọi phương thức không đồng bộ. static void TestCallbackAPM(){ static void CompleteRead(IAsyncResult r){ string filename=“…”; FileStream strm=new ….; // thực hiện lời gọi không đồng bộ Console.WriteLine(“Read Completed”); FileStream strm=(FileStream) r AsyncState; IAsyncResult result=strm.BeginRead(buffer,0,buf fer.Length,new AsyncCallBack(CompleteRead),str r.AsyncState; int numBytes=strm.EndRead(r); strm.Close(); C l W it Li ( ) 24 AsyncCallBack(CompleteRead),str m); } Console.WriteLine(…..); }
  • 25. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Ngoại lệ và APM• Ngoại lệ và APM − Khi dùng APM, các tác vụ có thể phát sinh các ngoại lệ trong quá trình xử lýlệ trong quá trình xử lý − Các ngoại lệ thường phát sinh trong quá trình gọi phương thức EndXXX. int numBytes=0; try{ numBytes=strm EndRead(result);numBytes=strm.EndRead(result); } Catch (IOException){ 25 Console.WriteLine(“An IO Exception occurred”); }
  • 26. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • ThreadPool • Timer• Timer 26
  • 27. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • ThreadPool − Trong nhiều trường hợp tạo tiến trình riêng để thực thiTrong nhiều trường hợp, tạo tiến trình riêng để thực thi những xử lý không đồng bộ là không cần thiết − .NET hỗ trợ các built-in thread pool có thể dùng trong ề ể ầ ế p g g nhiều trường hợp mà ta sẽ có thể cần phải tạo tiến trình xử lý của riêng mình. Các đặc điểm− Các đặc điểm • ThreadPool thực thi nhanh • Điều khiển số luồng thực thi tại cùng 1 thời điểm 27 Điều khiển số luồng thực thi tại cùng 1 thời điểm
  • 28. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Sử dụng ThreadPoolSử dụng ThreadPool − Dùng phương thức QueueUserWorkItem của ThreadPool để tạo và điều khiển các tiến trình static void WorkWithParameter(object o){ for (int i=0;i<10;i++){ Console.WriteLine(“{0}:Console.WriteLine( {0}: {1}”,o.ToString(),Thread.CurrentThread.ManagedThreadId); Thread.Sleep(10); }} } WaitCallback workItem=new WaitCallback(WorkWithParameter); if (ThreadPool QueueUserWorkItem(workItem ”ThreadPooled”); 28 if (ThreadPool.QueueUserWorkItem(workItem,”ThreadPooled”); Console.WriteLine(“Could not queue item”);
  • 29. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Giới hạn số tiến trình trong ThreadPool − ThreadPool cho phép chỉ định số lượng tiến trình tốiThreadPool cho phép chỉ định số lượng tiến trình tối đa và tối thiểu − 2 trường hợp cần thay đổi số lượng tiến trình:g p y g • Starvation • Startup thread speed − Thay đổi chỉ ảnh hưởng đến tiến trình hiện hành 29
  • 30. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Giới hạn số tiến trình trong ThreadPool − Starvation : xảy ra khi ứng dụng có quá nhiều tiến ủtrình, vượt quá giới hạn của ThreadPool. • Dùng phương thức ThreadPool.SetMaxThreads để thay đổi số lượng tiến trình giới hạn.ợ g g ạ int threads; int completionPorts;int completionPorts; ThreadPool.GetMaxThreads(out threads,out completionPorts); ThreadPool.SetMaxThreads(threads+10,completionPorts+100); 30
  • 31. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ • Timer − Lớp Timer hỗ trợ thực thi một phương thức được thamLớp Timer hỗ trợ thực thi một phương thức được tham chiếu bởi ủy nhiệm TimerCallback tại một/ nhiều thời điểm xác định một cách không đồng bộ. ế− Phương thức được tham chiếu được thực thi như một tiến trình trong ThreadPool. 31
  • 32. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC Lập trình không đồng bộ T Ti khởi độ h thứ • Sử dụng Timer − Khai báo Timer chỉ định Tạo Timer khởi động phương thức TimerTick mỗi giây, khởi động ngay lập tức : Khai báo Timer, chỉ định một phương thức cho ủy nhiệm TimerCallback thực thi khi khởi động Timer static void TimerTick(object o){ Console.WriteLine(“Tick : {0}”,DateTime.Now.ToLongTim thi khi khởi động Timer. − Các giá trị có thể thay đổi: • Thời gian chờ đến khi { } , g eString()); } TimerCallback tc=newThời gian chờ đến khi khởi động Timer. • Khoảng thời gian giữa các lần khởi động TimerCallback tc=new TimerCallback(TimerTick); Timer tm=new Timer(tc ,nothing , 0 1000 ) 32 lần khởi động. 0 ,1000 );
  • 33. TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM TRUNG TÂM TIN HỌC End Thanks 33