YOMEDIA
NONE

Sử dụng monitor để thực hiện loại trừ tương hỗ cho bài toán Người sản xuất, người tiêu dùng với bộ đệm hạn chế.

Theo dõi Vi phạm
ATNETWORK

Trả lời (1)

  • monitor BoundedBuffer

      product buffer[N];    //bộ đệm chứa N sản phẩm kiểu product

      int count;           //số lượng sản phẩm hiện thời trong bộ đệm

      condition notFull, notEmpty;    //các biến điều kiện

    public:

      boundedbuffer( ) {  //khởi tạo

        count = 0;

      }

      void append (product x) {

        if (count == N)  

          notFull.cwait ( );  //dừng và chờ đến khi buffer có chỗ

        <Thêm một sản phẩm vào buffer>

        count++;

        notEmpty.csignal  ();

    }

        product take ( ) {

        if (count == 0) 

          notEmptry.cwait ();  //chờ đến khi buffer không rỗng

        <Lấy một sản phẩm x từ buffer>

        count --;

        notFull.csignal ( );

      }

    }

    void producer ( )  {   //tiến trình người sản xuất

      for (;;){

        <Sản xuất sản phẩm x>

        BoundedBuffer.append (x);

      }

    }

    void consumer ( )  {   //tiến trình người tiêu dùng

      for (;;){

        product x = BoundedBuffer.take ();

        <Tiêu dùng x>

      }

    }

    void main() {

      Thực hiện song song producer và consumer.

    }

      bởi Hoa Lan 26/11/2021
    Like (0) Báo cáo sai phạm

Nếu bạn hỏi, bạn chỉ thu về một câu trả lời.
Nhưng khi bạn suy nghĩ trả lời, bạn sẽ thu về gấp bội!

Lưu ý: Các trường hợp cố tình spam câu trả lời hoặc bị báo xấu trên 5 lần sẽ bị khóa tài khoản

Gửi câu trả lời Hủy
 
NONE

Các câu hỏi mới

AANETWORK
 

 

YOMEDIA
ATNETWORK
ON