Ngoại lệ và APM

Một phần của tài liệu nền tảng lập trình c bài 10 threading (Trang 25 - 32)

Ngoi 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){

ThreadPool

Timer

ThreadPool

− Trong nhiTrong nhiềều tru trườường hng hợợp tp, tạạo tio tiếến trình riêngn trình riêng đểđể ththựực thic 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

SửSử dụng ThreadPooldụ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”); if (ThreadPool.QueueUserWorkItem(workItem,”ThreadPooled”);

Gii hn s tiến trình trong ThreadPool

− ThreadPool cho phép chThreadPool cho phép chỉ địỉ định snh sốố llượượng ting tiếến trình tn trình tốốii đa và tối thiểu

− 2 trường hg ợp cp ần thayy đổi số lượng tig ến trình:

Starvation

Startup thread speed

Gii hn 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 tig ến trình gig ới hạạn.

int threads;

int completionPorts; int completionPorts;

ThreadPool.GetMaxThreads(out threads,out completionPorts); ThreadPool.SetMaxThreads(threads+10,completionPorts+100);

Timer

− LLớớp Timer hp Timer hỗỗ trtrợợ ththựực thi mc thi mộột pht phươương thng thứứcc đượđược thamc 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.

Một phần của tài liệu nền tảng lập trình c bài 10 threading (Trang 25 - 32)

Tải bản đầy đủ (PDF)

(33 trang)