co_await c++20

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

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

    superakira Active Member

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

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    это stateless corutinies
    другими словами стейт машины на свитчах обманазаная ключевыми словами которые компилятор превращает код в свитчах
    дальше ответе сами, можно стейт машину на свитчах использовать в многопоточной среде
     
  3. superakira

    superakira Active Member

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

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    это все перекочевало с буста
    statefull корутины основаны на переключениях стека добавлять в ++20 не будут как я понял, пока или вообще не ясно
    а stateless уже работает в черновых вариантах
    собственно statless есть и в бусте, разница в том что из буста она работает на макросах
    а в стандарте для нее зарезервированы ключевые слова, видя которые компилер будет под них прятать всю ту же стейт машину на свитчах что и в бусте, ну или почти ту
    может в чем то усовершенствуют, Гор Нишанов над этим тоже трудился в МС, много видео есть в ютубе где он выступал и рассказывал про реализацию
     
  5. Indy_

    Indy_ Well-Known Member

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

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

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

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    не надо волноваться
    корутины и первого и второго типа отлично работают в высокого нагруженных системах

    корутины переключающие стек имеют механизм грин тредидов в винде
    грин трейды же не отваливаются ?

    какого хрена у меня не работает редактирование ? гугл хром последний
     
  7. Indy_

    Indy_ Well-Known Member

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

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

    Стек трогать нельзя.
     
  8. reversecode

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    не заморачивайся, все работает и успешно используетья всеми во всем мире
     
  9. SadKo

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

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

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
  11. SadKo

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

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.385
    Адрес:
    г. Санкт-Петербург
    В дыню за это Страуструпу по-хорошему дать бы. Если в язык впиливается куча других парадигм - почему не поддержать 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.
     
  12. reversecode

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    я тоже не вижу смысла в finally
    даже придумать не могу зачем оно мне бы понадобилось за 10+ лет программирования
     
  13. reversecode

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    ааа в ява нет RAII поэтому там активно юзают finally
    ну в С++ RAII активно юзается, в finally смысла нет
     
  14. SadKo

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

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

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    какие обертки, примеры показывайте
     
  16. SadKo

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

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

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    вы что то путаете, С++ объектно ориентированный язык
    напрямую всякие api используются только в библиотеках
    которые уже продуманны к использованию
    и никакой адище не присутствует
    если в коде присутствуют какие то апи - значит это не С++
     
  18. SadKo

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

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

    superakira Active Member

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

    reversecode Active Member

    Публикаций:
    0
    Регистрация:
    15 май 2008
    Сообщения:
    1.152
    В яве нет деструкторов, поэтому там лепять финализе
    В С++ деструкторы с раи решают все эти ява ляпы

    как присутствует винапи ?, натыкано везде по коду и это не библиотека или отдельная сущность ? тогда это не С++
     
Статус темы:
Закрыта.