Вы можете рассматривать класс сообщений как буфер для одного сообщения. Когда вы пишете сообщение, оно становится полным и не может принимать новые сообщения, пока сообщение не будет прочитано. Точно так же, если вы читаете сообщение, когда оно пустое, оно ждет, пока кто-то записывает в него.
Экземпляры сообщения начинаются пустыми, поэтому, когда вы пишете в него, оно пропускает время, пока l oop устанавливает сообщение и уведомляет всех ожидающих читателей.
Еще одна запись перед тем, как чтение теперь ожидает в то время как l oop, потому что empty
имеет значение false.
Если вы читаете сообщение из потока и если сообщение непустое, read пропускает время, пока l oop, устанавливает empty
в true и уведомляет всех ожидающих авторов.
Когда писатель просыпается, он видит, что empty
- истина, пишет сообщение и снова устанавливает empty
в false.