OPTADS360
ATNETWORK
NONE
YOMEDIA
Banner-Video
IN_IMAGE

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ế.

  bởi Ngọc Trinh 26/11/2021
ADSENSE/lession_isads=0
QUẢNG CÁO
 

Câu 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
 
 

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

NONE
OFF