| Предыдущий | Следующий |
| MACH_RCV_INTERRUPTED | MACH_RCV_INVALID_NOTIFY |
MACH_RCV_PORT_CHANGED
Историческое сообщение о состоянии гонки
MACH_RCV_PORT_CHANGED исторически описывал операцию приёма, начатую для отдельного права приёма, которое во время вызова было перемещено в набор портов. Старые документы интерфейса Mach перечисляют такое поведение, но текущие заголовки XNU сохраняют константу только для совместимости и отмечают, что она больше не возвращается.
Базовая проблема конкурентности всё ещё важна, хотя современный код не должен рассчитывать на этот точный статус. Членство в наборе портов и владение правом приёма могут измениться, пока другой поток заблокирован в mach_msg. Надёжная архитектура явно назначает владельца изменений членства и использует актуальные документированные результаты — тайм-аут, прерывание, уничтожение порта или успешный приём — для координации завершения и перенастройки.
Как интерпретировать появление
- Определите, получено ли значение из старой ОС, архивного журнала, слоя совместимости или закрытой реализации.
- Запишите имя порта, имя набора портов и поток, выполнивший изменение членства.
- Не создавайте в новом коде ветвь управления, ожидающую именно этот устаревший результат в текущей XNU.
- При приёме из набора используйте заголовок возвращённого сообщения, чтобы определить порт-член, предоставивший сообщение.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
