Как бы вы подошли к использованию D во встроенной среде реального времени? - PullRequest
15 голосов
/ 11 июля 2009

Для всех, кто знаком с D языком программирования , как его использовать во встроенной среде реального времени? Я понимаю, что его оригинальный дизайн не предназначен для встраиваемых сред реального времени, но этот вопрос больше о том, как бы вы реализовали возможности реального времени.

Какие конструкции языка были бы необходимы?

Какие конструкции, по вашему мнению, будут проблемой?

Кто-нибудь успешно использовал его во встроенной системе?

Любые другие мысли или предложения будут великолепны.

Ответы [ 2 ]

12 голосов
/ 11 июля 2009

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

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

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

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

5 голосов
/ 12 июля 2009

В реальном времени больше гарантий, чем в режиме реального времени. Таким образом, есть две возможности;

  • Если вам не нужны зависимые от GC библиотеки, просто избегайте зависимости вашего приложения / библиотек. Делайте это, всегда следя за тем, чтобы у вас были неконтролируемые выделения и, желательно, вообще никаких выделений во время фактического запуска приложения (выделите заранее).
  • Было проведено исследование ГХ в реальном времени на других языках. Это не тривиально, хотя и может вызвать больше замедлений, чем то, что вы готовы платить за свои гарантии. Требования заключаются в том, чтобы сборщик мусора реализовывался так, чтобы время, затрачиваемое на любую операцию, имело верхнюю границу, и чтобы компилятор реализовывался так, чтобы он помогал вставлять барьеры (это также потребуется для движущегося сборщика мусора без RT). *
...