Кресты / Говнокод #28139 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 kcalbCube, (Updated )

Комментарии (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 расширение
          Ответить
          • какой 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ы для макросов то было бы проще
            Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8