Добавьте уникальную переменную Bool
, чтобы вы могли понять, куда обращаться к этому контроллеру. Сделайте flag false
в viewWillAppear
, потому что каждый раз, когда он должен обновляться, это самый простой способ, которым вы можете достичь.
class ViewController1: UIViewController {
var isFromVC2 = false
var isFromVC3 = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
isFromVC2 = false
isFromVC3 = false
}
}
class ViewController2: UIViewController {
//You can call this function from where you want otherwise you can make it global.
func navigateToVC1() {
let viewController1 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController1") as! ViewController1
viewController1.isFromVC2 = true
self.navigationController?.pushViewController(viewController1, animated: true)
}
}
class ViewController3: UIViewController {
func navigateToVC1() {
let viewController1 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController1") as! ViewController1
viewController1.isFromVC3 = true
self.navigationController?.pushViewController(viewController1, animated: true)
}
}
FreeRTOS, это обеспечивает базовое ядро. Я использовал его в некоторых встроенных приложениях, и это кажется устойчивым. Но, это действительно зависит от Вашего приложения.
Проверьте eCos свободную, и операционную систему реального времени с открытым исходным кодом. (Поддержки x86, не уверенный в многоядерном)
RTLinux также доступен
eCos свободен (но можно получить заплаченную поддержку). Это поддерживает архитектуру Intel x86. Это поддерживает многопроцессорные системы. В зависимости от Ваших требований синхронизации у меня был не слишком хороший опыт с системами Linux в реальном времени. Хотя время отклика может быть хорошим в среднем, я видел случаи, где худший случай за несколько дней может быть 10 или даже в 100 раз больше. Я предполагаю, что это частично зависит от качества драйверов, частично на самом планировщике.
Но я предполагаю, что это сводится к тому, требует ли Ваша система жесткое реальное время или мягкое реальное время, каковы ограничения синхронизации, какое приложение необходимо запустить. И как оптимизированная система разработки Вы требуете.
Существуют расширения жесткого реального времени ядра Linux. Вы могли бы хотеть проверить некоторых из тех.
Хорошими примерами является RTAI и LXRT
Хорошо это не Открытый исходный код, но Вы знали, что Windows CE является операционной системой жесткого реального времени и что это действительно имеет x86 порт? Я не знаю однако, если это может поддерживать многоядерные центральные процессоры. Если это - коммерческий проект, определенно необходимо рассмотреть это.
Существует также MicroC/OS-II, который имеет x86 порт, но как выше, я не знаю, поддерживает ли он много ядра. Это свободно для некоммерческих приложений.
Существует S.Ha. R.K. Проект. Это работает с x86 центральными процессорами, но я не знаю, обрабатывает ли это все ядра ЦП.
Каковы Ваши строгие требования? Возможно, можно использовать ванильный Linux - он не обеспечивает гарантии в реальном времени, но мог бы быть достаточно хорош. Некоторые люди находят, что это не настолько плохо, как поставщики в реальном времени пытаются разобрать.
Ванильный Linux ДЕЙСТВИТЕЛЬНО имеет различные политики планирования также, но не много людей знают это.
Shortened altered president, University'ректор находится под Лицензией BSD.
Есть расширения для Linux в реальном времени, как уже упоминалось кем-то другим. Взгляните на xenomai.org
Я не уверен насчет мультипроцессора. Что именно вы хотите делать на нескольких процессорах?
OpenSolaris имеет возможности работы в реальном времени, однако вам следует быть осторожными, если вы решите использовать его для разработки в реальном времени: практически все операции ввода-вывода могут вызывать инверсию приоритета в ядре (низко- Системные рабочие потоки с приоритетом могут «голодать» и вызывать блокировку потоков с высоким приоритетом, например, в коде STREAMS).
Я также использовал операционную систему FreeRTOS, которая доступна бесплатно по модифицированной лицензии GNU, платной коммерческой версии лицензии или дорогой сертифицированной версии безопасности (SafeRTOS)
На веб-сайте имеется порт x86 следующим образом
* Supported processor families: Any x86 compatible running in Real mode only, plus a Win32 simulator
* Supported tools: Open Watcom, Borland, Paradigm, plus Visual Studio for the WIN32 simulator
Эта ОС обеспечивает упреждающее или кооперативное планирование задач с очередями, семафорами и установкой приоритета для задач. Он не предоставляет функций ввода-вывода или файловой библиотеки, которые поставляются с другими более крупными реализациями ОС, такими как Linux.