Ví dụ về Đồng bộ hóa tiến trình!!!

Go down

Ví dụ về Đồng bộ hóa tiến trình!!!

Bài gửi  LuongGiaDuc(I12A) on 14/3/2012, 14:22

Ví dụ 1:
Tiến trình ghi P:
while (true) {
while (counter==SIZE) ;
buf[in] = nextItem;
in = (in+1) % SIZE;
counter++;
}
buf: Buffer
SIZE: cỡ của buffer
counter: Biến chung

Tiến trình đọc Q:
while (true) {
while (counter==0) ;
nextItem = buf[out];
out = (out+1) % SIZE;
counter--;
}
Đây là bài toán vùng đệm có giới hạn

LuongGiaDuc(I12A)

Tổng số bài gửi : 29
Join date : 10/03/2012
Age : 27
Đến từ : TPHCM

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ví dụ về Đồng bộ hóa tiến trình!!!

Bài gửi  LuongGiaDuc(I12A) on 14/3/2012, 14:23

Ví dụ 2
Các toán tử ++ và -- có thể được cài đặt như sau:
counter++
register1= counter;
register1 = register1 + 1;
counter = register1
;
counter--
register2 = counter;
register2 = register2 - 1;
counter = register2
;

P và Q có thể nhận được các giá trị khác nhau của counter tại cùng 1 thời điểm nếu như đoạn mã xanh
và đỏ thực hiện xen kẽ nhau.


Được sửa bởi LuongGiaDuc(I12A) ngày 14/3/2012, 14:32; sửa lần 1.

LuongGiaDuc(I12A)

Tổng số bài gửi : 29
Join date : 10/03/2012
Age : 27
Đến từ : TPHCM

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ví dụ về Đồng bộ hóa tiến trình!!!

Bài gửi  LuongGiaDuc(I12A) on 14/3/2012, 14:28

Ví dụ đồng bộ hóa (3)
Giả sử P và Q thực hiện song song với nhau và giá trị của counter là 5:
register1 = counter; // register1 =5
register1 = register1 + 1; // register1 =6
register2 = counter; // register2 =5
register2 = register2 - 1; // register2 =4
counter = register1 ; // counter=6 !!
counter = register2 ; // counter=4 !!

Bạn nào có ý kiến hay các ví dụ tương tự thì post lên cho mình tham khảo nha Smile

LuongGiaDuc(I12A)

Tổng số bài gửi : 29
Join date : 10/03/2012
Age : 27
Đến từ : TPHCM

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Ví dụ về Đồng bộ hóa tiến trình!!!

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết