Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 33 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
33
Dung lượng
342,84 KB
Nội dung
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ì hkhô đồ bộ • Lậ p t r ì n h 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ộtkháiniệm quan trọng trong phát triểnphầnmềm, hỗ trợ thựchiệnnhiềutácvụ tại ù ột thời điể c ù ng m ột thời điể m. • Hầuhết các tác vụđềucóthờigianchết (downtime), với threading, ta có thể cho bộ xử lý tiếp tục thực với threading, ta có thể cho bộ xử lý tiếp tục thực hiện công việc trong suốtthờigianđó. • Lớp Thread được dùng để tạovàthựcthicáctiế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ộctínhvàphương thứccủatiếntrì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 • CurrentPrinci p al p • 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ức Các phương thức • Abort • Interru p p • 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ộctínhvàphương thứccủatiếntrì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 • Get D o m a in Get o a • GetDomainID • ResetAbort • Sleep • SpinWait • VltilR d 8 • V o l a til e R ea d • 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ởitạotiếntrình Khởi tạo tiến trình − Thực thi tiến trình − Ghép nốicáctiếntrì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 namespace Trong . 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 [...]... SomeClass.WriteToConsole(); } 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ễn − Dừng tiến trình một c ch an toàn : tạo lập critical region với g p g BeginCriticalRegion và EndReticalRegion static void AbortThisThread(){ Thread.BeginCriticalRegion(); SomeClass.IsValid=true; Critical Region SomeClase.IsComplete true; SomeClase.IsComplete=true;... ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H CLậptrình không đồng bộ • Timer − − Lớ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 CLậptrình không đồng bộ • Tạo Timer... } Catch (IOException){ Console.WriteLine(“An IO Exception occurred”); } 25 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H CLậptrình không đồng bộ • • ThreadPool Timer 26 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Lậptrình không đồng bộ • ThreadPool − − − Trong nhiều trường hợp tạo tiến trình riêng để th c thi hợp, những xử lý không đồng bộ là không c n thiết NET hỗ trợ c c. .. fer.Length,new AsyncCallBack(CompleteRead),str m); } int numBytes=strm.EndRead(r); strm.Close(); Console.WriteLine(… ); C l W it Li ( ) } 24 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Lậptrình không đồng bộ • Ngoại lệ và APM − − Khi dùng APM, cc t c vụ c thể phát sinh cc ngoại lệ trong quá trình xử lý Cc ngoại lệ thường phát sinh trong quá trình gọi phương th c EndXXX int numBytes=0;... 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ộ − − − Wait-Until-Done W it U til D Pooling Callback 21 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Lậptrì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ộ và th c thi cc t c vụ kh c Lời gọi kết th c phương th c không đồng... ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Lậptrì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 Asynchronous P A h Programming M d l (APM) i Model (APM) • NET framework hỗ trợ APM qua nhiều lớp c cung c 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... 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 Cc đ 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 TRƯỜNG ĐẠI H C KHOA H C TỰ NHIÊN TP.HCM TRUNG TÂM TIN H C Lậptrình không đồng bộ • Sử dụng ThreadPool − Dùng phương th c QueueUserWorkItem c a ThreadPool để tạo và điều khiển cc 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 • Th c thi tiến trình − − Tiến trình đư c khởi tạo sẽ không tự động th c thi 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 • Demo khởi tạo và D à th c thi tiến trình: • • • • Static void SimpleWork(){ Console.WriteLine(“Thread:... th c Sử dụng Timer − − Khai báo Timer chỉ định Timer, một phương th c cho ủy nhiệm TimerCallback th c thi khi khởi động Timer Timer Cc giá trị c thể thay đổi: TimerTick mỗi giây, khởi động ngay lập t c : static void TimerTick(object o){ Console.WriteLine(“Tick : { } , {0}”,DateTime.Now.ToLongTim g eString()); } • Thời gian chờ đến khi khởi động Timer • Khoảng thời gian giữa cc Timer tm=new Timer(tc... 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 để 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=“…”; Console.WriteLine(“Read Completed”); FileStream strm=new ….; FileStream strm=(FileStream) r.AsyncState; r AsyncState; // th c hiện lời gọi không đồng bộ IAsyncResult result=strm.BeginRead(buffer,0,buf . thuộctínhvàphương thứccủatiếntrì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 • Get D o m a in Get. 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 •. Thread đư c dùng để tạovàthựcthicáctiế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