1. Pascal / Говнокод #13769

    +139

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    type
      TCriricalThread = class (TThread)
      private
        FileS    : integer;
        Percent  : integer;
        DlSize   : integer;
        procedure SetMaxPos;
        procedure SetCurPos;
        procedure LockButton;
        procedure DislockButton;
      protected

    Ну, уж если есть критические секции, почему бы не сделать критический поток?
    TCriricalThread = class (TThread)

    Запостил: Stertor, 11 Сентября 2013

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

    • Критические потоки, такие критические.
      http://www.cyberforum.ru/delphi-networks/thread349154.html
      Ответить
    • Гость, зачем испортил тред?

      смотрите, товарищи, он маскирует ссылку, с понтом на комментарий, чтобы пользователь в почтовом уведомлении перешел на гей сайт!
      Ответить
      • > перешел на гей сай
        И стал пидорасом...
        Ответить
        • <И стал пидорасом...>
          ...если не был им, с самого начала.
          Ответить
        • Зачем ты ответил уёбку?
          Ответить
          • Ну ты прям как эти твиттерасты, которые сообщения десятилетней давности выкапывают...
            Ответить
            • Сейчас мы тебя закенселим за ответ уебку в 2013-м году

              Закенселили же чувака за то, что он в школе в 1969-м году на карнавал негром нарядился
              Ответить
    • http://tarasber.narod.ru
      Ответить
      • симулятор трамвая)

        блин, а я все свои игрушки писанные в *цать лет проёб( Правда, там не было 3д -- только спрайты по экрану гонялись
        Ответить
      • Эх, жалко что Тарас ушёл с ГК.
        Ответить
        • Да, геймдевелоперы обычно довольно хорошие программисты, с ними есть о чем поговорить

          Ну конечно если это не unity3d а трушные гейдевы
          Ответить
        • Ты в этом уверен?
          Ответить
    • #include <fstream>
      
      void foo(std::ostream&& a) {
              a << "Hello";
      }
      
      int main() {
              std::ofstream f("fooo");
              foo(std::move(f));
              f << "World"; //почему тут нету ворнинга что это UB?
      }
      Ответить
      • В данном случае это не UB, с f ничего не происходит. В общем случае — тоже не UB, потому что после перемещения объект должен остаться в "определённом" состоянии, чтобы его можно было удалить.
        Ответить
        • разве можно писать в мувнутый стрим? Почему тогда копирование запрещено?

          или это не UB, а просто ошибка, так как поведение при записи в мувнутый стрим известно?

          зы: нашел

          ) Move constructor. First, move-constructs the base class from other (which does not affect the rdbuf() pointer), then move-constructs the std::basic_filebuf member, then calls this->set_rdbuf() to install the new basic_filebuf as the rdbuf() pointer in the base class.
          Ответить
      • 1) Потому что это не раст с его боров-чекером.
        2) Потому что тут ничего и не мувнулось.
        Ответить
        • почему не мувнулось?
          Ответить
          • Потому что std::move ничего не делает... Уже несколько раз же обсуждали.

            Ты получил с помощью него rvalue ссылку на стрим, передал её в f. Но дальше мувать ничего не стал, а просто высрал в этот стрим "Hello".
            Ответить
            • разве не вызвался мувающий конструктор?
              ладно, пойду перечитаю
              Ответить
              • Нет конечно. А где ты его тут видишь?
                Ответить
                • нету его тут, да, бо foo получает ссылку. Сыылку получили, и дальше ее передали. Нету повода вызывать нкакой конструктор: ни копирующий, ни муваюший. Всё по ссылке

                  Временное помутнение
                  Ответить
                  • Поmoveнение.
                    Ответить
                    • А можно сделать мув семантику вообще без rvalue и даже на с++03

                      просто взять копирующий конструктор, и написать в нем код, который помечает переданный объект как "опустошенный"..


                      или там const ссылка передается, и не получится?
                      Ответить
                      • Можно, std::auto_ptr так и работал... Но это пиздец грабли, на них все наверное наступали.

                        rvalue ссылки завезли как раз чтобы случайно не мувалось.
                        Ответить
                        • ))poorman's smart pointer :)

                          даже если ссылка const, то можно где-то в другом месте пометить инстантс как "пустой", ну видимо он так и делал.
                          Ответить
                          • Ну у него там не конст вроде был. Но один фиг мувнуть и не заметить было элементарно.
                            Ответить
                            • поняно

                              нужно было разделить два кейса, вот и заюзали rvalue.
                              Ответить
              • Ему неоткуда вызываться, foo() принимает просто ссылку. Вот если бы она принимала "ostream a", тогда бы вызвался.
                Ответить
                • понял, спасбо

                  я получл ссылку, но не воспользовался ею.
                  Ответить
                  • Не совсем.

                    На уровне языка &&-ссылка никак (ну, за исключением пары совсем тонких моментов, нужны для упрощения написания кода, вроде того, что в &&-ссылку можно скастить временный объект) не привязана к "перемещениям", это просто обыкновенная ссылка, которая не кастится (неявно) в &.
                    То, что &&-ссылка используется для перемещения объектов — это просто конвенция.
                    С практически таким же успехом ты можешь объявить функцию "T *move(T & obj) { return std::addressof(obj); }", а в качестве перемещающих конструкторов использовать "T(T *other)".
                    Ответить
                    • спасбо

                      В этом коде я по сути передал стрим по ссылке, и думал, что магическим образом от этого что-то вызовется.

                      Правильно было бы сделать

                      void foo(std::ofstream a)

                      и вот когда при вызове его я бы сделал move, то объект бы мувнулся
                      Ответить
        • Свинка-проверяшка
          Ответить

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