Size: a a a

2020 July 16

VO

Vyacheslav Olkhovche... in Embedded Group
особенно с ростом сложности системы, если пытаешься думать о перфомансе и эффективности
источник

MP

Max Payne in Embedded Group
Vyacheslav Olkhovchenkov
в первую очередь разборка с ошибками -- это правильное приведение всего в исходное состояние. и нихера оно оавтомагически не делается.
это когда ты на питоне пишешь, 99% времени работы с ошибками это "правильно приведение всего в исходное состояние"

в си 50% времени это "ой бля, хотел забыл закрыть дескриптор на ошибке выше, но пропустил по невниманию..."
источник

E

Evgen in Embedded Group
Сиие Сууие
Goto
Сейчас набегут
хороший же инструмент, если с умом использовать)
источник

СС

Сиие Сууие in Embedded Group
Так. Пока вы тут, я как раз за малину сажусь, скажите, у малины в тсп ИП стеке есть какая-то глубина буфера для входных юдп пакетов?

Грубо говоря, у меня летят пачки пакетов с минимальным зазором времени, если я буду тормозить с их выборкой они в очередь будут откладываться или откидываться?
источник

MP

Max Payne in Embedded Group
Vyacheslav Olkhovchenkov
в первую очередь разборка с ошибками -- это правильное приведение всего в исходное состояние. и нихера оно оавтомагически не делается.
На Си


int rc;
void *p = lib_foo();
if (p == NULL) {
  rc = -1;
  goto err_foo;
}

err_foo:
  dealloc_some_shit_on_error();
  return rc;


На Раст:

foo()?;



Еще вопросы?
источник

MP

Max Payne in Embedded Group
все что можно автоматизировать - следует автоматизировать. мне пофиг на Раст, мне не пофиг, что я ебусь с одним и тем же 8й год уже - этот паттерн на Си у меня  в спинном мозге прописан :)
источник

DL

Dima Leonov in Embedded Group
Max Payne
На Си


int rc;
void *p = lib_foo();
if (p == NULL) {
  rc = -1;
  goto err_foo;
}

err_foo:
  dealloc_some_shit_on_error();
  return rc;


На Раст:

foo()?;



Еще вопросы?
А зачем он?..
источник

DL

Dima Leonov in Embedded Group
Проверка есть ли функция?
источник

VO

Vyacheslav Olkhovche... in Embedded Group
эти два куска кода как-то неочевидно эквиваленты
источник

MP

Max Payne in Embedded Group
Dima Leonov
Проверка есть ли функция?
где там такое видно? О_о
источник

VO

Vyacheslav Olkhovche... in Embedded Group
с чего бы расут делать деаллок?
источник

MP

Max Payne in Embedded Group
Vyacheslav Olkhovchenkov
эти два куска кода как-то неочевидно эквиваленты
почему же?
источник

MP

Max Payne in Embedded Group
Vyacheslav Olkhovchenkov
с чего бы расут делать деаллок?
потому что есть trait Drop?
источник

DL

Dima Leonov in Embedded Group
Max Payne
где там такое видно? О_о
Делаешь пустой указатель, закидываешь в него адрес функции, а потом проверяешь его на ноль
источник

MP

Max Payne in Embedded Group
Dima Leonov
Делаешь пустой указатель, закидываешь в него адрес функции, а потом проверяешь его на ноль
нет :)
источник

СС

Сиие Сууие in Embedded Group
Dima Leonov
Делаешь пустой указатель, закидываешь в него адрес функции, а потом проверяешь его на ноль
Не адрес
источник

MP

Max Payne in Embedded Group
lib_foo() это вызов функции
источник

VO

Vyacheslav Olkhovche... in Embedded Group
а где он в твоей строчке на расте?
источник

СС

Сиие Сууие in Embedded Group
Dima Leonov
Делаешь пустой указатель, закидываешь в него адрес функции, а потом проверяешь его на ноль
Адрес это void *p = foo
источник

DL

Dima Leonov in Embedded Group
Сиие Сууие
Адрес это void *p = foo
Проглядел, согласен
источник