Таймер в Pharo 1.3

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Таймер в Pharo 1.3

XumuK
Не подскажете, как реализовать выполнение некого метода по таймеру? Есть какие-либо методы в Pharo 1.3? 

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Таймер в Pharo 1.3

Nikolay Kleptsov
(Delay forMilliseconds:aMilliseconds) wait задерживает выполнение текущего процесса на миллисекунды.
Если нужно таймер запустить в отдельном процессе тогда можно использовать код
[програм. код] fork. Код блока будет выполнен в отдельном процессе.
Бесконечный цикл реализуется [програм. код] whileTrue:[true].
Более подробно см классы BlockClosure, Process, Delay, DelayWaitTimeout

15 августа 2012 г., 2:06 пользователь XumuK <[hidden email]> написал:
Не подскажете, как реализовать выполнение некого метода по таймеру? Есть какие-либо методы в Pharo 1.3? 

--
http://groups.google.ru/group/sugr

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Таймер в Pharo 1.3

Denis Kudriashov
15 августа 2012 г., 6:39 пользователь Nikolay Kleptsov <[hidden email]> написал:
(Delay forMilliseconds:aMilliseconds) wait задерживает выполнение текущего процесса на миллисекунды.

Есть более красивое выражение:

2 seconds asDelay wait
1 minutes asDelay wait

и т.д.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Таймер в Pharo 1.3

XumuK
Сделал, правда не в отдельном процессе. Не понял как потом тот процесс, который я запустил с помощью fork остановить. Всем спасибо.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Таймер в Pharo 1.3

Nikolay Kleptsov
Очень просто. Например,
process := [[Delay forMilliseconds: 1000.
                  Transcript show: 'process is running'; cr.] whileTrue: [true]] fork.
и теперь через переменную process можно управлять параллельным процессом.
process resume. "запустить приостановленный процесс".
process suspend. "приостановить процесс, с возможностью продолжения".
process terminate. "остановить, без возможности восстановления".
Smalltalk предоставляет гибкие средства управления процессами.
Также процессы можно отлаживать через tools --> process browser.

16 августа 2012 г., 22:06 пользователь XumuK <[hidden email]> написал:
Сделал, правда не в отдельном процессе. Не понял как потом тот процесс, который я запустил с помощью fork остановить. Всем спасибо.

--
http://groups.google.ru/group/sugr

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Таймер в Pharo 1.3

Nikolay Kleptsov
правильно
process := [[(Delay forMilliseconds: 1000) wait.
                  Transcript show: 'process is running'; cr.] whileTrue: [true]] fork.

16 августа 2012 г., 22:23 пользователь Nikolay Kleptsov <[hidden email]> написал:
Очень просто. Например,
process := [[Delay forMilliseconds: 1000.
                  Transcript show: 'process is running'; cr.] whileTrue: [true]] fork.
и теперь через переменную process можно управлять параллельным процессом.
process resume. "запустить приостановленный процесс".
process suspend. "приостановить процесс, с возможностью продолжения".
process terminate. "остановить, без возможности восстановления".
Smalltalk предоставляет гибкие средства управления процессами.
Также процессы можно отлаживать через tools --> process browser.

16 августа 2012 г., 22:06 пользователь XumuK <[hidden email]> написал:

Сделал, правда не в отдельном процессе. Не понял как потом тот процесс, который я запустил с помощью fork остановить. Всем спасибо.

--
http://groups.google.ru/group/sugr


--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Таймер в Pharo 1.3

XumuK
In reply to this post by XumuK
Ясно, большое спасибо)

--
http://groups.google.ru/group/sugr