2

1/Поддерживает ли алгоритм взаимное исключение?Поддерживает ли это взаимное исключение: параллельное программирование?

2/Возможно ли, что алгоритм свободен от тупика и возможен ли голод?

Кажется, я не могу оторваться от тупика. Я действительно верю, что нет взаимного исключения, поскольку любой клиент может войти в критический раздел?

Благодаря

+0

Не размещайте изображение с текстом. Текст в изображении трудно читать (невозможно, если вы слепы) и не может быть обыскан. Положите объяснение алгоритма в текст прямо в свой вопрос. – Gilles

+0

Хорошо, спасибо за совет. – DPC

ответ

0

Это алгоритм, когда клиенты просят «замок», который предоставляется сервером.

  1. Это действительно алгоритм взаимного исключения. Предположим, что два клиента i и j находятся между C2 и C3. W.l.o.g, скажем, что i был первым, кто попал в критический раздел.

    1. Когда я сделал так, обязательно respond = i должен был быть верным в C1. Это должно было произойти на сервере Q2.

    2. Глядя на код сервера, он не может доходить до Q2 до тех пор, пока Q3 не сработает, а именно до respond == 0. Если посмотреть на код клиента, это может произойти только тогда, когда i оставил критический раздел в C3.

    3. Это противоречит J быть одновременно в критической секции - Q2 может быть достигнуто только еще раз, когда я покинул критическую секцию, так, до этого, это невозможно, что J прошел C1.

  2. Алгоритм не свободным от голода. Клиент j может неограниченно обходить некоторым клиентом i. Алгоритм : свободен от тупика: существует только один критический раздел, и если какой-либо поток, входящий в него, в конечном итоге выйдет из него, он будет в конечном итоге доступен для другого потока (хотя, возможно, и того же).

+0

Спасибо. Отличное объяснение! – DPC

+0

Добро пожаловать. Всего наилучшего. –

Смежные вопросы