Конференция "Прочее" » Потоки
 
  • Галинка (08.07.08 19:22) [0]
    они всегда впереди паровоза бегут? Т.е. при пощаговой отладке все выходит правильно. Но если запустить программу, то сначала результат выводится, а потом уже производятся действия, которые в потоке (((
  • ketmar © (08.07.08 19:27) [1]
    порядок исполнения не определён. иначе это уже не потоки, а сопрограммы.

    ---
    Understanding is not required. Only obedience.
  • Zeqfreed © (08.07.08 19:32) [2]
    google Синхронизация?
  • Сергей М. © (08.07.08 19:35) [3]

    > Галинка   (08.07.08 19:22)  


    Смотря кто есть "паровоз") ..


    > сначала результат выводится, а потом уже производятся действия


    Ты сама-то поняла, какую абракадабрищу ты сейчас написала ?)
    Где ты видела, чтобы результат действий предшествовал самим этим действиям ?)
    Типо я знаю, что я уже беременна, потому что завтра возможно я забеременею ?)
  • ketmar © (08.07.08 19:37) [4]
    >[3] Сергей М. © (2008-07-08 19:35:00)
    да чего там такого? монетку подбросила, и всё…

    ---
    Do what thou wilt shall be the whole of the Law.
  • Галинка (08.07.08 19:40) [5]
    Сергей, я вижу, то что я вижу. В главной программе инициализируем нить (класс-наследник от Thread). Потом опрашиваем поле этого класса, которое должно содержать результат выполнения метода run() нити. Но на тот момент, когда я его опрашиваю, нить вероятно еще не выполнилась. Когда же я аккуратненько трассирую и все делается по порядку, тогда я разумеется вижу результат.
  • ketmar © (08.07.08 19:42) [6]
    >[5] Галинка (2008-07-08 19:40:00)
    обалдеть. женская логика в действии.

    ---
    Do what thou wilt shall be the whole of the Law.
  • Игорь Шевченко © (08.07.08 19:53) [7]
    мож того, котлеты ?
  • Галинка (08.07.08 19:59) [8]
    Игорь Шевченко ©   (08.07.08 19:53) [7]

    а может все же объяснить?
  • Игорь Шевченко © (08.07.08 20:03) [9]
    Галинка   (08.07.08 19:59) [8]


    > а может все же объяснить?



    > Т.е. при пощаговой отладке все выходит правильно. Но если
    > запустить программу, то сначала результат выводится, а потом
    > уже производятся действия, которые в потоке (((


    > В главной программе инициализируем нить (класс-наследник
    > от Thread). Потом опрашиваем поле этого класса, которое
    > должно содержать результат выполнения метода run() нити.
    >  Но на тот момент, когда я его опрашиваю, нить вероятно
    > еще не выполнилась. Когда же я аккуратненько трассирую и
    > все делается по порядку, тогда я разумеется вижу результат.
    >


    Такое объясняется на платной основе. Готова платить за объяснения ?

    Если нет, то Kirche, Kuche, Kinder
  • Котик Б (08.07.08 20:04) [10]
    Зая, сегодня прелестный летний вечер :) Пойдёмте лучше погуляем...
  • ketmar © (08.07.08 20:11) [11]
    >[8] Галинка (2008-07-08 19:59:00)
    >а может все же объяснить?

    поясняю: котлеты у тебя должны получаться лучше.

    ---
    Do what thou wilt shall be the whole of the Law.
  • TUser © (08.07.08 20:13) [12]
    Все просто - паровоз летает быстрее скорости света, а в этом случае, как известно, следствие опережает причину. Отладкой ты замедляешь паровоз, а на досветовых скоростях причины предшествует следствию.
  • Zeqfreed © (08.07.08 20:22) [13]
    Как это записано в коде:
    1. Создать объект потока
    2. Запустить поток на выполнение
    3. Получить результат работы потока

    Что происходит при трассировке:
    1. Создается объект потока
    2. Запускается объект потока
    3. Здесь, очевидно, программа останавливается отладчиком, поток получает свою долю процессорного времени и выполняет вычисления
    4. Программа выполняется дальше благодаря тому, что Галинка нажимает кнопку "Next Step" или как она там называется

    Что происходит при выполнении без остановки отладчиком:
    1. Создается объект потока
    2. Запускается объект потока
    3. Получаются результаты выполнения, но поток вычислений еще не выполнялся, т.к. главный поток программы все еще не израсходовал отведенное ему процессорное время
    4. Операционная система наконец решает выполнить поток (если он к этому моменту еще жив)
  • Украинец (08.07.08 20:23) [14]

    > Галинка   (08.07.08 19:22)
    >
    > они всегда впереди паровоза бегут? Т.е. при пощаговой отладке
    > все выходит правильно. Но если запустить программу, то сначала
    > результат выводится, а потом уже производятся действия,
    > которые в потоке (((


    Используй CreateFiber http://msdn.microsoft.com/en-us/library/ms682402(VS.85).aspx там выполнение управляется вручную.

    Или если хочешь использовать именно нити, то стоит посмотреть в сторону TCriticalSection модуля SyncObjs
  • ketmar © (08.07.08 20:24) [15]
    >[13] Zeqfreed © (2008-07-08 20:22:00)
    демпингуешь. кю.

    ---
    All Your Base Are Belong to Us
  • Zeqfreed © (08.07.08 20:25) [16]
    > ketmar ©   (08.07.08 20:24) [15]

    Я выполняю общественно полезные работы :) По крайней мере хочется в это верить.
  • Игорь Шевченко © (08.07.08 20:26) [17]

    > Я выполняю общественно полезные работы :)


    Сеешь разумное доброе вечное, а вырастает...
  • Anatoly Podgoretsky © (08.07.08 20:31) [18]
    > ketmar  (08.07.2008 20:11:11)  [11]

    Ты Галинку с истинного пути не свернешь, она закаленый боец.
  • Украинец (08.07.08 20:35) [19]

    >
    > Галинка   (08.07.08 19:22)
    >
    > они всегда впереди паровоза бегут? Т.е. при пощаговой отладке
    > все выходит правильно. Но если запустить программу, то сначала
    > результат выводится, а потом уже производятся действия,
    > которые в потоке (((


    Да, за красивую фотку на почту alife-soft@yandex.ru расскажу на пальцах как все это работает. Если все таки не поможет, отошлю фотку обратно.
 
Конференция "Прочее" » Потоки
Есть новые Нет новых   [134439   +35][b:0][p:0.001]