Code nsx-ntd

I. Triết gia ăn cơm

semaphore chopstick[5] = {1,1,1,1,1,1};

void Philosopher(int i){ //tiến trình P(i)

for(;;){ //lặp vô hạn

Wait(chopstick[i]); //lấy đũa bên trái

Wait(chopstick[(i+1)%5]); //lấy đũa bên phải

<Ăn cơm>

Signal(chopstick[(i+1)%5]);

Signal(chopstick[i]);

<Suy nghĩ>

}

}

void main(){

// chạy đồng thời 5 tiến trình

StartProcess(Philosopher(0));

...

StartProcess(Philosopher (4));

}

II.Bài toán người sản xuất người tiêu dùng

Const int N; // kích thước bộ đệm Semaphore empty = 0;

Semaphore lock = 1; Semaphore full = N

Void producer () {

for (; ;) {

<sản xuất>

wait (full);

wail (lock);

<thêm 1 sản phẩm vào bộ đệm>

signal (lock);

signal (empty);

}

}

Void consumer() {

for (; ;) {

wait (empty);

wail (lock);

<lấy 1 sản phẩm từ bộ đệm>

signal (lock);

signal (full);

<tiêu dùng>

}

}

Void main() {

startProcess(producer); startProcess(consumer);

}

Bạn đang đọc truyện trên: TruyenTop.Vip

Tags: #melody