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

Xem chủ đề cũ hơn Xem chủ đề mới hơn 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

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


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