Перейти к содержанию
    

Архитектура программ во встраиваемой электронике

11 часов назад, Solonovatiy сказал:

БЛ может требовать асинхронности, но это не зависит от наличия или отсутствия RTOS, это требование исходя из задач и архитектуры самой БЛ.

Вот именно. Об этом я и говорил. Ещё раз: "Если ваша БЛ требует асинхронности (по алгоритму её работы требует)", то реализация её на РТОС будет проще, чем самостоятельная реализация функционала асинхронности. А если она не требует асинхронности, то на кой её размазывать по нескольким задачам ОС, а не разместить в одной задаче???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, jcxz said:

Вот именно. Об этом я и говорил. Ещё раз: "Если ваша БЛ требует асинхронности (по алгоритму её работы требует)", то реализация её на РТОС будет проще, чем самостоятельная реализация функционала асинхронности. А если она не требует асинхронности, то на кой её размазывать по нескольким задачам ОС, а не разместить в одной задаче???

Потому, что даже то, что требует асинхронности можно сделать синхронно? Как и наоборот. 
Выше человек писал как пример - опрос клавиатуры, может быть выполнен синхронно, может асинхронно. Опрос клавиатуры не совсем БЛ, но чисто как пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, jcxz сказал:

А если она не требует асинхронности, то на кой её размазывать по нескольким задачам ОС, а не разместить в одной задаче???

например, у вас есть два или более процессорных ядра и алгоритм позволяет

1 час назад, jcxz сказал:

по алгоритму её работы требует

Пожалуй, тоже накину:

image.thumb.png.8d2959159e903a809fe6c987ee76e13a.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Solonovatiy сказал:

Потому, что даже то, что требует асинхронности можно сделать синхронно? Как и наоборот. 

Можно. И трусы можно через голову надевать. Только сложнее многократно.

1 час назад, Solonovatiy сказал:

Выше человек писал как пример - опрос клавиатуры, может быть выполнен синхронно, может асинхронно. Опрос клавиатуры не совсем БЛ, но чисто как пример.

Что асинхронного в опросе клавиатуры???  :wacko2:

Похоже вы так и не поняли моего вопроса. Хотя специально цветом выделил: задача требующая по своему алгоритму асинхронности. А не потому что левая пятка быдлокодера её реализовывавшего так захотела её сделать асинхронно. Вы путаете требования алгоритма и конкретный вариант его реализации.

 

PS: Чисто как пример попробуйте сделать и так и так: управление PMSM-мотором + HTTP(или HTTPS)-сервер в одном устройстве с одним CPU. Пример практический, а не сферический конь в вакууме.

 

17 минут назад, tgruzd сказал:

Пожалуй, тоже накину:

image.thumb.png.8d2959159e903a809fe6c987ee76e13a.png

Вот именно. И похоже Solonovatiy путает это понятие с понятием "реализация алгоритма".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, jcxz сказал:

требующая по своему алгоритму асинхронности

А можно пожалуйста пример, чтобы именно требовала. То есть была принципиально невыполнима в один поток? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

29 minutes ago, jcxz said:

задача требующая по своему алгоритму асинхронности

Примеры? Ничего не требует. В идеальном случае - все можно реализовать синхронно, имея достаточно производительности для этого.
Если вы про некие требования жесткого РТ, то В ТЕОРИИ синхронную программу тоже можно так написать, что бы их удовлетворить. 

Вся вытесняющая кооперативность, это именно

29 minutes ago, jcxz said:

потому что левая пятка быдлокодера её реализовывавшего так захотела её сделать асинхронно

Или если словами без "дедизма" - удобно, понятно, поддерживаемо, читаемо. По сравнению с тем, что будет, если руками попытаться 1в1 функционал реализовать.

Изменено пользователем Solonovatiy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, tgruzd сказал:

А можно пожалуйста пример, чтобы именно требовала. То есть была принципиально невыполнима в один поток? 

Я вроде выше привёл. Прочитайте внимательнее предыдущий пост.

Да и это вообще-то я просил от ТС привести такой пример. Который он до сих пор так и не привёл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мужики, я запутался уже, кто куда воюет))

image.png.817853ab024b8aff2fc8b342ff503e24.png

8 минут назад, Solonovatiy сказал:

Ничего не требует. В идеальном случае - все можно реализовать синхронно, имея достаточно производительность.

 

31 минуту назад, jcxz сказал:

требующая по своему алгоритму асинхронности

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 минут назад, Solonovatiy сказал:

Примеры? Ничего не требует. В идеальном случае - все можно реализовать синхронно, имея достаточно производительности для этого.

Что-нибудь конкретно сказать по теме можете? Я вам привёл конкретный пример, задал конкретный вопрос. А от вас опять пустой трёп....

4 минуты назад, tgruzd сказал:

Мужики, я запутался уже, кто куда воюет))

ТС с самого начала толкует о неких "БЛ", "требующих асинхронности":

15 часов назад, Solonovatiy сказал:

когда БЛ начинает требовать асинхронности

но так ни разу и не привёл ни одного конкретного примера такой БЛ. Один пустой трёп. Ещё и противоречит сам себе в разных постах....

Возникает законное сомнение в том, что ТС сам понимает о чём ведёт речь.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, tgruzd said:

Мужики, я запутался уже, кто куда воюет))

image.png.817853ab024b8aff2fc8b342ff503e24.png

 

 

Сначала был посыл что "требования асинхронности это желание программиста".
Он сместился на то, что есть задачи, которые по своей природе не могут быть выполнены асинхронно.
Теперь он обратно выпрыгнул в "ну вот программист так решил".

Вы как бы можете вещи в контексте называть. А когда кто-то меняет контекст начинается не разбери

5 minutes ago, jcxz said:

Что-нибудь конкретно сказать по теме можете? Я вам привёл конкретный пример, задал конкретный вопрос. А от вас опять пустой трёп....

Потому что вы либо вообще сути вопроса не поняли, либо посты набиваете.

while(){ Motor(); HTTP(); }

Задача решена синхронно. 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, Solonovatiy сказал:

while(){ Motor(); HTTP(); }

Мотор сгорел, электромобиль врезался в столб, автор сего "кода" изучает инструкцию к бензопиле на лесоповале :russian_ru:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, jcxz said:

Мотор сгорел, электромобиль врезался в столб, автор сего "кода" изучает инструкцию к бензопиле на лесоповале :russian_ru:

Скорее начальник отдела контроля безопасности (ну или кто там допускает изделие). Но это другая тема.
Но давайте почитаем материалы дела, по какой причине он сгорел? 

Изменено пользователем Solonovatiy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

image.png.30e7234b07ce95deb32b36dc1cf844cb.png

11 минут назад, Solonovatiy сказал:

while(){ Motor(); HTTP(); }

Что вы хотите сказать этим псевдокодом?

Жопа.Сидеть(Стул) , да, верно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, tgruzd said:

image.png.30e7234b07ce95deb32b36dc1cf844cb.png

Что вы хотите сказать этим псевдокодом?

Жопа.Сидеть(Стул) , да, верно?

Что это вопрос внутренней реализации. У вас вообще нет инфы как реализовано HTTP и контроль мотора и что там внутри? Там может быть целая микра - драйвер или скорее всего таймер многоканальный, в который надо просто заткнуть значения, может быть не блокирующая реализация HTTP сервера и т.п.
И в ТЕОРИИ, да даже на практике если захотеть, можно все это нафигачить в одном потоке. Будет совсем переусложненный говнокод да, но это возможно.
Псевдокодом я и показал. То что вы придумали что HTTP блокирующее и обработчик мотора не успеет отреагировать -- это домыслы. В условиях был только мотор и хттп.

Та асинхронность, что будет сделана на одном ядре - это один хрен будет тоже самое, только код другой. Он один фиг будет синхронный.
Можно возразить, что но вот есть прерывание по SysTimer, так он пока нет защищенного режима тоже не указ, можно вполне себе посидеть в критической секции.
Чем это функционально отличается от if(isMotorHandlerTimeout){return;} через каждый чих в HTTP??? (ну кроме лютейшей говнокодовости)

Пример jcxz выше с намеком на вытесняющую многозадачность, это как раз выбор программиста, он (с моей точки зрения правильный), т.к. альтернатива гораздо хуже.
Но вопрос как раз про поиск этой грани и принципах ее поиска. Вот с какого момента стоит разделять таски, а когда стоит жаться в одном.
Пример с очень разными и сложными задачами, еще и требующими жесткого РТ очень наглядный. Но он слишком общий и слишком очевидный.

Я серьезно должен это расписывать? 

Изменено пользователем Solonovatiy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...