co_await c++20

Тема в разделе "LANGS.C", создана пользователем superakira, 13 мар 2018.

Статус темы:
Закрыта.
  1. superakira

    superakira Guest

    Публикаций:
    0
    Собственно, я не понял) Можно ли их юзать в многопоточной среде? Те если есть бул потоков и хз кто будет такой рутину саспендить резумить... Вот не понял такой вот кейс.
    Заранее спасибо.
     
  2. superakira

    superakira Guest

    Публикаций:
    0
    можно :) но все зависит от реализации итд.
    я вот как-то фундаментального описания не нашел. те доступным для дебилов языком)) те общей картины не вижу. понятно для чего и как юзать, но про ограничения не нашел, те кейсы когда надо и не надо итд. Сорри что сумбурно, много работы, тяжело переключаться.
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Зачем такое нужно, когда отваливаться оно начнёт, то станет ясно что не следует использовать этот кривой рантайм. Эти компилеры итак линкуют кучу бесполезного дерьма, вот есчо нужно добавить.. Система предоставляет любые синхромеханизмы. Конечно если нужна портабельность, то это может смысл и имеет юзать. Но я бы такое апп не использовал, ну после первого раза когда оно отвалится или повиснет.

    > корутины основаны на переключениях стека

    Что бы это не значило, это не есть хорошо. При первом таком переключении системная защита убьёт апп.
     
    Последнее редактирование: 16 мар 2018
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Переключение стека это OP атака, в ядро системы введены детекты данных событий. В последних версиях системы вообще предсказать нельзя куда они это впилят, может напрямую в шедулер.. Даже в 8-ке базовые сервисы мониторят данное событие, не говоря уже про 10-ку.

    Стек трогать нельзя.
     
  5. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    А finally по-прежнему не впилили в стандарт? Ай-ай-ай...
     
  6. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    В дыню за это Страуструпу по-хорошему дать бы. Если в язык впиливается куча других парадигм - почему не поддержать finally?

    Код (C):
    1.  
    2. class File_handle {
    3.         FILE* p;
    4.     public:
    5.         File_handle(const char* n, const char* a)
    6.             { p = fopen(n,a); if (p==0) throw Open_error(errno); }
    7.         File_handle(FILE* pp)
    8.             { p = pp; if (p==0) throw Open_error(errno); }
    9.  
    10.         ~File_handle() { fclose(p); }
    11.  
    12.         operator FILE*() { return p; }
    13.  
    14.         // ...
    15.     };
    16.  
    17.     void f(const char* fn)
    18.     {
    19.         File_handle f(fn,"rw");    // open fn for reading and writing
    20.         // use file through f
    21.     }
    22.  
    23.  
    Говнокод 80 lvl.
     
  7. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Ну то есть вы предпочитаете писать обёртки для каждого ресурса, когда нужно ваять код, работающий с сишными интерфейсами?
     
  8. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Например, работа с тем же WinAPI или xlib напрямую, когда в одной функции надо работать с несколькими ресурсами одновременно, при использовании RAII превращается в адище. С finally, при этом, особых проблем нет.
     
  9. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Ясно понятно, ок. Вопросов больше не имею.
     
  10. superakira

    superakira Guest

    Публикаций:
    0
    SadKo, раи обычная идиома в мире цпп, тот код что ты привел - сам по себе говнокод.
    а что это если там присутствует винапи? :)
    Indy_, ты не понимаешь. есть стандарт, его принял комитет, разработчики должны его поддерживать. МС одни из разработчиков с++ компилятора, они и реализуеют поддержку корутин. в го они есть и тебя не смущает, а в цпп ты что-то про атаки бредишь. это задача рантайма - фиберы или еще как - это их проблемы.
     
  11. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Этот говнокод с официального FAQ создателя, отца и основателя всея C++ Бъёрна Страуструпа.

    Как же это не C++, если компилируется плюсовым компилятором? Java-компиль такое не съест, Сишный тоже с большой вероятностью что нет.
     
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.548
    Адрес:
    Russia
    Ребят вы путаете С++ как язык, с кроссплатформенным программированием и конформансностью. Вот вам делать нечего.
     
  13. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    И скопипастить, ага. И потом ещё раз повторить.

    А кто сказал, что код размазывается по всему проекту? Достаточно трёх-четырёх единиц трансляции, чтобы всё оформить в виде ООП. Однако от геморроя со своевременным освобождением системных ресурсов отсутствие finally не спасает.

    Так пользователю или разработчику? Я что-то не понял.
    Какие интерфейсы пользователю, вы о чём?

    О да, это отличный аргумент.
    Вот вам конкретный другой пример - VST3. Там, как раз, решили сразу шиппить "няшные" плюсовые интерфейсы.
     
  14. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Нет, мне навязывают RAII как пилюлю при условии того, что куча других парадигм уже утянули в язык, а на ключевое слово finally жмотятся.
    UPD. На break с указанием того цикла, который надо прервать, тоже жмотятся.
     
  15. CurryHowardIsomorphism

    CurryHowardIsomorphism Member

    Публикаций:
    0
    Регистрация:
    13 май 2017
    Сообщения:
    97
    Чёт в http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4723.pdf не нашёл, что co_await и др. родственные конструкции превращаются в код на свитчах.
     
  16. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    superakira,

    Кури матчасть, какие есчо фиберы. Контора ваша походу совсем поганая.
     
  17. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Это скриптовые абстракции, они реально не существуют. Шедулер ничего про них не знает. Есть рабочие фабрики например(worker factory), это ситемный механизм. А фиберы - это вообще хз что такое. Хоть данные функции и есть в виде винапи, но они ничего не делают и бесполезны. Это древний рудимент, возможно это понятие существовало на самых первых системах 9x, от туда и пришло просто в виде заглушки.
     
  18. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.548
    Адрес:
    Russia
    Просто, чтоб знали что это. Но таки да. Ядро про это не знает. Тут вы правы
     
  19. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    То есть, вы файловые и сокет-дескрипторы в деструкторах закрываете?
    Ну тогда поздравляю вас!
    Код (Text):
    1.  
    2. man close
    Текст мана:
    ПРИМЕЧАНИЕ:
     
  20. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Ну вам не нужен, а мне нужен. Так как надо контроллить корректность закрытия ресурсов. Если вы на это забиваете - то мне больше нечего комментировать.
     
Статус темы:
Закрыта.