Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Giải pháp sai dẫn đến Deadlock

Go down

Giải pháp sai dẫn đến Deadlock Empty Giải pháp sai dẫn đến Deadlock

Bài gửi  NguyenVanTung 13/5/2009, 16:57

#include “prototype.h”
#define N 5 /* Số hiền triết */
void philosopher ( int i ) { /* i = 0, 1, ... , N-1 */
while ( 1 ) {
think ( ); /* Đang nghĩ */
take_chopstick ( i ); /* Lấy đũa bên trái */
take_chopstick ( (i+1) % N ); /* Lấy đũa bên phải */
eat ( ); /* Ăn */
put_chopstick ( i ); /* Đặt đũa bên trái */
put_chopstick ( (i+1) % N ); /* Đặt đũa bên phải */
}
}

Deadlock xảy ra khi cả 5 nhà hiền triết cùng 1 lúc tìm cách lấy đũa bên Trái, sau đó không ai lấy được đũa bên Phải cả và cứ thế chờ nhau.
Có thể sửa chương trình để mỗi hiền triết nhấc đũa bên trái trước, nếu được thì kiểm tra đũa bên phải, nếu không có thì đặt đũa bên trái xuống, chờ 1 lúc rồi tiếp tục lại như trên. Nếu cả 5 người cùng làm như vậy một lúc sẽ dẫn đến tình trạng Starvation.
NguyenVanTung
NguyenVanTung

Tổng số bài gửi : 36
Join date : 06/03/2009
Age : 38
Đến từ : 140 Lê Trọng Tấn, P.Tây Thạnh, Q.Tân Phú, Tp.HCM

http://www.cntp.edu.vn

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

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