1. Си / Говнокод #4210

    +129

    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
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    #include <iostream>
    #include <windows.h>
    #include <pthread.h>
     
    void * func_MyThread(void * args)
    {
     
    int S=0; //
     
       int i;
     
       int j;
     
    int k;
     
    pthread_t MyThread;
     
    pthread_create(&MyThread,NULL,func_MyThread,NULL); 
     
    for (i=1; i <=8; i++)//
     
    pthread_join(MyThread,NULL);
     
    {
     
        S +=i+1; //
    }
     
       pthread_create(&MyThread,NULL,func_MyThread,NULL); 
     
     for (j=4; j <=12; j++)//
     
    pthread_join(MyThread,NULL);
     
    {
     
    S+=j; //
     
    }
     
    pthread_create(&MyThread,NULL,func_MyThread,NULL);
     
    for (k=5; k<=20; k++)
     
    pthread_join(MyThread,NULL);
     
    {
     
        S += k*(2*k-1); 
    }
     
    {
     
    std::cout <<"S= \t" <<S; //
     
    return 0;// 
    }

    студент решал задачу по распределенному программированию.
    все очень серьезно.

    Запостил: niXman, 09 Сентября 2010

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

    • вот только это С++, а не Си =Ъ
      форматирование классное :(

      хм, а это реальный код, или немного подправленный?..

      for (i=1; i <=8; i++)// 
      pthread_join(MyThread,NULL);
      {
       
          S +=i+1; //
      }


      вот в таких моментах чот странное твориться
      Ответить
    • полное отсутствие логики, либо криво правленый код перед постингом...
      Ответить
      • да. это студент на форуме задачу решает.
        ссылку не дам :D
        Ответить
        • эту ссылку:
          http://www.cyberforum.ru/archive/t-164495.html

          действительно, не надо. там печально.
          Ответить
        • >>Блог *nix Man
          http://blog.sokov.org/2010/06/проверка-на-валидность-email/

          <?
          if (filter_var($email, FILTER_VALIDATE_EMAIL))
          echo “valid emaid”;
          else
          echo “invalid emaid”;
          ?>

          А мужики то не знают!
          Ответить
    • ого, питреды на винде
      Ответить
      • ога.
        собственно я его спросил по этому поводу. говорит что в задании так написано.
        Ответить
        • а задании не написано, что говнолабы не надо постить на говнокоде?
          Ответить
      • А в чем проблема? Питреды на Винде существуют уже давно.
        Ответить
        • Я в курсе, но это не часть win32api, и мне странно что б кто-то использовал их для продакшена. Разве что для порта на винду какого-нить apache2.
          Ответить
    • очередная унылая хуита говнолаба, которую никто ни разу не запускал, ибо для компилятора это прога будет выглядеть вот так:
      for (i=1; i <=8; i++) {
         pthread_join(MyThread,NULL);
       }
      
      S +=i+1;

      и
      for (j=4; j <=12; j++) {
         pthread_join(MyThread,NULL);
       }
      
      S+=j;


      потом зачем стартовать нити с функции, которая только и делает, что плодит новые нити и блочится, ожидая их завершения?
      Ответить
      • >>нити
        оффтоп: так всё-таки тред по-русски будет нить или поток?
        Ответить
        • нить.
          поток - stream.
          Ответить
          • тоесть "многопоточное приложение" -- это неверно?

            А в ms-sql еще есть понятие "волокно";))
            Ответить
            • "многопоточное приложение" - имеется ввиду, что потоки кода выполняются параллельно.
              т.е. файловые потоки - это потоки данных. многопоточная программа - несколько потоков кода, выполняющихся параллельно.
              правильно - распределенная программа.
              Ответить
              • хм)
                а если потоки кода выполняются не в разных нитях а в разных процессах (каждый со своим адресным пространством, кучей, контекстом безопастности итд) -- это многопоточное?
                А если они вообще на разных машинах?

                Товарищ, который запустил восемь php.exe, и сказал что что написал "многопоточное приложение" был осмеян. А Вы хотите сказать что он был прав (в терминологии разумеется) ?:)
                Ответить
                • а если потоки кода выполняются не в разных нитях а в разных процессах
                  распределенное. затык то в чем? к терминологии придираетесь?

                  про товарища не понял. если это прикол - глупый прикол.
                  Ответить
                  • Затык в терминологии) Я про нее и спросил изначально.

                    Про товарища поясню: в одном из здешних топиков некто запустил несколько процессов и сказал что он сделал "многопоточное решение". Его поправили, что дескать многопоточное -- это когда несколько потоков в одном процессе.
                    (несколько threads в одном process).
                    Я был в числе поправивших)

                    А если я Вас правильно понял, то Вы говорите что thread это нить, а поток -- это просто поток кода, в независимости от того, где он выполняется.

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

              "волокно" это "fiber" http://msdn.microsoft.com/en-us/library/ms682661(VS.85).aspx
              в одной библиотеке видел собирательное для них и нитей: "yarn" = "пряжа" :-)

              вроде как стандартным стал говноперевод, валящий в одну кучу "stream" и "thread"
              причем это не единичный фэйл русского языка, "operator", "statement" = "оператор"
              а потом кто-то удивляется, почему у русских такие плохие способности к кибернетике...
              Ответить
            • Ой, «волокно»! Правда? Какая прелесть!
              Говорят, что называть нити потоками придумали как раз в московском микрософте.

              Многоволоконное приложение! Там много волов и окон.
              Ответить
              • волокно это не нить, это немного другое понятие: (в мсдн fiber).

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

                    Но какого хрена было в русском виндус вместо английского слова использовать немецкое?
                    Если бы слово брандмауэр было общеизвестно в России -- это имело бы смысл.
                    Но это не так. Даже если пожарные используют этот термин, то это не значит что он всем известен.

                    Зачем было менять файрвол на брандмауэр? И от английского "де-факто" стандарта уклонились, и русскому человеку понятнее не стало (спроси обычного человека -- что такое брандмауэр?).
                    Ответить
                    • А я как-то спрашивал :) Обычная девушка ответила: "Брандмаузер (!!!) это такая программа для выхода в интернет"
                      Ответить
                    • > брандмейстерами
                      только начальники пожарных команд, -мейстер же

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

                      Если локализатор изобретает слова - он называется надмозг и его надо резать бритвой Оккама.

                      Помимо простой дословности, у меня есть некоторая идея: канонiчное название брандмауэра - межсетевой экран; а такая штука, как personal firewall немного не лезет в определение межсетевого экрана. Это на правах гипотезы.

                      А вообще английский местами чрезвычайно убог, нечего его в стандарты записывать (ср. немецкое слово обозначающее фрезерный станок, и английскую кучу, а потом подивись почему ездишь на авто немецкого производства)
                      Ответить
                      • Английский чуть более, чем полностью убог. Немецкий в техническом плане куда точнее! В нём нет выражений, лишённых смысла.
                        Ответить
                        • Да ну!
                          [troll mode on]
                          На немецком только ругаться, слова длинные, со вкусом можно произносить.
                          Классической поэзии на немецком раз-два и обчелся, не то, что на английском!
                          Но лучше всего, конечно, французский!
                          А вообще, уместно вспомнить замечательную песню Щербакова: Дуэт.
                          Ответить
                    • Не, брандмауэр — понятие, в русском языке давно присутствующее. В строительстве.
                      Но согласен, что для большинства шило на мыло.
                      Ответить
          • > нить.
            > поток - stream.

            да, если переводить со стандартного англ. - это будет так...

            но стоит учитывать, тот факт, что в русском языке (как и во многих других) нету специальной терминологии для ИТ сферы (введу ограниченности языковых средств)...

            в русском языке (ИТ сфера) thread имеет смысл поток, впрочем stream - тоже поток...

            т.е. Поток(ит сфера) можно считать омонимом, который принимает нужное значение от контекста:
            - поток выполнения (трид),
            - поток данных (стрим)

            так что давайте не будем выябываться и оставить как есть: Трид == Поток...
            а то уже заебали "знатоки", которые пытаются донести "Истинный смысл" :(
            Ответить
            • ------------------------- ПРАВКА -------------------------------

              > нить.
              > поток - stream.

              да, если переводить со англ. на базовый русский - это будет так;
              но в русском языке(ит сфера) нету специальной терминологии для этого слова...

              самое близкое по значению: поток, как обозначение какого-то движения (типа бурный речной поток)

              т.е. перевод для ит сферы:
              thread - поток выполнения
              stream - поток данных

              но в разговорной форме общения, всегда сокращаются длинные понятия:
              поток выполнения -- поток,
              поток данных -- поток,
              - и значение оного слова будет зависеть от контекста...

              т.е. Поток(ит сфера, разговорное) можно считать омонимом, который принимает нужное значение от контекста:
              поток - поток выполнения (трид),
              поток - поток данных (стрим)


              так что давайте не будем выябываться и оставить как есть: Трид == Поток...
              а то уже заебали "знатоки", которые пытаются донести "Истинный смысл" :(


              -------- имхо: так будет более ясна мысля -----
              Ответить
            • Я Вас умаляю! За ограниченность языковых средств.

              Специальной терминологии для ИТ нигде нет. Просто американы успели первыми и мы теперь воспринимаем эти термины как данность. Требуется время. Вот мне как слух резало, когда директории стали называть папками, а теперь ничего, в языке обжилось и все попривыкали.
              Ответить
              • И что характерно, опять майкрософт.
                Мне бы до сих пор резало, если бы в виндусячьем шелле не было различия между понятием "папка" и "директория"
                Ответить

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