Как Вы приблизились бы к использованию D во встроенной среде реального времени?

Путаница скрывает или делает что-то тяжелее для понимания.

Хеширование берет вход, выполняет его через функцию и генерирует вывод, который может быть ссылкой на вход. Это не обязательно уникально, функция может генерировать тот же вывод для различных исходных данных.

Шифрование преобразовывает вход в вывод уникальным способом. Существует непосредственная корреляция, таким образом, нет никаких возможных потерь данных или беспорядка - вывод может всегда преобразовываться назад к входу без неоднозначности.

15
задан BCS 11 July 2009 в 19:27
поделиться

2 ответа

D на самом деле не предназначен для использования в приложениях реального времени, в основном потому, что некоторые языковые функции D полагаются на его сборщик мусора, а сборщик мусора D непредсказуем и будет периодически приостанавливать выполнение вашей программы, чтобы собирать мусор. Цитата :

Сборка мусора - не панацея. Есть некоторые недостатки:

  • Время запуска коллекции непредсказуемо, поэтому программа может произвольно приостановить выполнение.
  • Время, необходимое для запуска коллекции, не ограничено. Хотя на практике это происходит очень быстро, этого нельзя гарантировать.
  • Все потоки, кроме потока-сборщика, должны быть остановлены, пока сбор выполняется.

Вы по-прежнему можете использовать D без сборщика мусора (управляя памятью вручную, как в C / C ++) - это помешает вам использовать определенные языковые функции, такие как ассоциативные массивы и библиотечные функции, которые внутренне выделяют память без освобождения / возврата ссылки на нее. D по-прежнему выделяется во многих областях, не зависящих от управления памятью (таких как метапрограммирование).

12
ответ дан 1 December 2019 в 04:10
поделиться

Реальное время - это больше о гарантиях, чем о производительности в реальном времени. Таким образом, есть две возможности:

  • Если вам не нужны библиотеки, зависимые от сборщика мусора, просто не делайте ваше приложение / библиотеки зависимыми от него. Делайте это, всегда проверяя, что у вас есть неконтролируемые выделения, и желательно, чтобы они не выделялись вообще во время фактического выполнения приложения (выделите заранее).
  • Были проведены исследования GC в реальном времени на других языках. Однако это нетривиально и может вызвать больше замедлений, чем то, что вы готовы заплатить за свои гарантии. Требования состоят в том, чтобы сборщик мусора был реализован таким образом, чтобы время, затрачиваемое на любую операцию, имело верхнюю границу, и чтобы компилятор был реализован таким образом, чтобы он мог помогать путем вставки барьеров (также может понадобиться для сборщика мусора без RT).
5
ответ дан 1 December 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: