1. C++ / Говнокод #28139

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    #include <iostream>
    #include <vector>
    #include <thread>
    int f()
    {
        static int i = 0;
        synchronized { // begin synchronized block
            std::cout << i << " -> ";
            ++i;       // each call to f() obtains a unique value of i
            std::cout << i << '\n';
            return i; // end synchronized block
        }
    }
    int main()
    {
        std::vector<std::thread> v(10);
        for(auto& t: v)
            t = std::thread([]{ for(int n = 0; n < 10; ++n) f(); });
        for(auto& t: v)
            t.join();
    }
    
    0 -> 1
    1 -> 2
    2 -> 3
    ...
    99 -> 100

    https://en.cppreference.com/w/cpp/language/transactional_memory

    Запостил: kcalbCube, 27 Апреля 2022

    Комментарии (26) RSS

    • Это типа встроенный в язык мьютекс?
      Ну, синтактический сахар.
      Ответить
      • нет, это некая более сложная замудрённая система, в которой можно грабить корованы и её ждут уже много лет
        Ответить
    • В крестопарашное говно добавили очередное ключевое слово, и теперь нельзя называть функции и переменные словом "synchronized"? Охуенно!

      Почему б крестоговностандартизатором не использовать говнонеймспейс для такого говна, ну типа чтобы было std::special_shit::synchronized {какая-то там хуйня} ?
      Ответить
      • Вот додики. Надо было __synchronized называть
        Ответить
      • Вообще в сишко и крестопарашу давно пора завезти ключевые слова a, b, c, ... , i, ... , z, aa, ab, ... , zz, aaa, ... , zzz. Чтобы учились называть переменные по человечески.
        Ответить
        • > завезти ключевые слова a, b, c, ... , i, ... , z, aa, ab, ... , zz, aaa, ... , zzz. Чтобы учились называть переменные по человечески.

          Хуй там. Будут называть "aaaa". Или "a1", "a2", "a3" ... или с какими-то говноподчеркиваниями
          Ответить
          • > какими-то говноподчеркиваниями

            А тут компилятор подползает сзади и напоминает, что в некоторых случаях подчёркивания в именах — UB, а при UB может и жёсткий диск отформатироваться.
            Ответить
            • Главное в самом начале эти подчеркивания не делать
              Ответить
        • Сначала плюсанул.
          А потом прочитал внимательнее.

          > ключевые слова a, b, c, ... , i,
          И как теперь счётчики писать, когда не будет идиоматичного i++?
          Ответить
    • Стареют С++сники конечно: такое длинное слово добавили, как в джаве
      Двадцать лет назад они добавили бы `[@]` или `(=:)=`
      Ответить
      • Меня больше интересует, какого хера они не сделают неймспейсы для своих говнонововведений? Если у них аллергия на "__" в начале, в чем проблема новые ключевые слова добавлять в специальные зарезервированные неймспейсы?
        Ответить
        • Так ключевые слова в неймспейсы не пихаются же.
          Ответить
        • Да и вообще, концепцию можно расширить, например разрешать кому-то писать свои особые говнорасширения крестопомойного дерьма, под них регистрировать какие-то там блядь ключевые слова в неймспейсах, которые обрабатываются новым Тьюринг-полным говноязыком, который имеет полный доступ к AST программы в пределах единицы трансляции, и может его произвольно перехуячивать
          Ответить
          • Пиши пропозал.
            Ответить
          • кто про что, а Джей про гомоиконность
            Ответить
            • Так охуенно же предлагает.
              using keywords krestogovno22;
              И поехали.

              Даже без гомоговна, чтобы импортились разные ключевые слова из разных мудулей и стандартов.

              А то кресты какие-то скучноватые.
              Ответить
          • можно сделать ассемблер поддерживающий это, потом написать PHP расширение
            Ответить
          • https://habr.com/ru/post/572416/
            Ответить
            • какой lex:)

              > У вас не получиться парсить синтаксис любого языка регэкспами.



              безвузные питухи традиционно не могут в свободные грамматики, еерархию хорьски и лексеры/парсеры
              Ответить
        • Я вообще за то, чтобы решать средствами библиотеки всё, а не срать ключ словами
          Ответить
          • Но сначала нужно расширить концепцию согласно см.выше. А то получится static std::threading::synchronized sync1(new std::bind(std::functions::function<std:: threading::thread *>{([=](std::threading::thread * /*context*/) {
            <ваш код>
            })}), nullptr); sync1.exec(std::threading::get_current_t hread());
            Ответить
            • если бы мы могли генерить uuidы для макросов то было бы проще
              Ответить

    Добавить комментарий