[Squeak-ja: 3815] ループしているプロセスの停止について

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

[Squeak-ja: 3815] ループしているプロセスの停止について

kubo-o
また教えていただきたいことができましたので、
ご多忙中に恐縮ですがよろしくお願いいたします。
次のようなcodeを書いてdo it しました。
arm := LineMorph from: 290@300 to: 710@300  color: Color black width: 5.
[[ arm openInWorld.
   ( Delay forSeconds: 1) wait] repeat] fork
当然loopになってしまい、止めたいのです。
そこで自由自在Squeak p.277に習って
(ActiveWorld submorphs select: [:each | each isKindOf: PolygonMorph])
  do: [:each | each delete].
としてみましたが、効き目ありません。
もちろんAlt + . もやってみましたけれど。
どうしたらよいでしょうか。
ご教示をお願いいたします。
久保 道
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3816] Re: ループしているプロセスの停止について

Kazuhiro ABE-3
阿部@新百合です。

いきなりforkを送ると、あとでそのプロセスを捕まえにくくなるので、まずは変
数に入れたほうが良いと思います。

arm := LineMorph from: 290@300 to: 710@300  color: Color black width: 5.
process := [[ arm openInWorld.
   ( Delay forSeconds: 1) wait] repeat] newProcess.
process resume

これを終了するときは以下のようにします。

process terminate

他どのようなメソッドがあるかはProcessクラスのインスタンスメソッドを見てく
ださい。
forkは単なる予約語ではなく、メッセージですから、ブロックにforkを送ったと
きになにが起こっているかを考える必要があります。
ワークスペースなどでforkを選択し、Alt+bを押すとその定義を調べることができ
ます。
せっかく中身を参照できるわけですから、今回の問題に限らず、分からないこと
があったら、中を調べてみるのは良い習慣だと思います。

また、自由自在では一章を費やして並行処理について解説しています(第12章)。

 //abee
--
阿部 和広  EMAIL [hidden email]
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3825] Re: ループしているプロセスの停止について

kubo-o
阿部さん、さっそく教えていただいて、
ありがとうございました。
ただ、前回書きましたように私の場合は、
ご指示くださったように
「まずは変数に入れたほうが良い」という点が
できていなかったので、困っています。
最終的には必要なcodeだけ取り出して
別につくりなおすことにします。
お返事遅れて失礼いたしました。
久保 道
-----Original Message-----
From: [hidden email] [mailto:[hidden email]]
On Behalf Of Kazuhiro ABE
Sent: Thursday, February 07, 2008 4:14 PM
To: Squeak discussion in Japanese
Subject: [Squeak-ja: 3816] Re: ループしているプロセスの停止について

阿部@新百合です。

いきなりforkを送ると、あとでそのプロセスを捕まえにくくなるので、まずは変
数に入れたほうが良いと思います。

arm := LineMorph from: 290@300 to: 710@300  color: Color black width: 5.
process := [[ arm openInWorld.
   ( Delay forSeconds: 1) wait] repeat] newProcess.
process resume

これを終了するときは以下のようにします。

process terminate

他どのようなメソッドがあるかはProcessクラスのインスタンスメソッドを見てく
ださい。
forkは単なる予約語ではなく、メッセージですから、ブロックにforkを送ったと
きになにが起こっているかを考える必要があります。
ワークスペースなどでforkを選択し、Alt+bを押すとその定義を調べることができ
ます。
せっかく中身を参照できるわけですから、今回の問題に限らず、分からないこと
があったら、中を調べてみるのは良い習慣だと思います。

また、自由自在では一章を費やして並行処理について解説しています(第12章)。

 //abee
--
阿部 和広  EMAIL [hidden email]

No virus found in this incoming message.
Checked by AVG.
Version: 7.5.516 / Virus Database: 269.19.21/1267 - Release Date: 2008/02/08
20:12


No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.516 / Virus Database: 269.20.5/1279 - Release Date: 2008/02/14
18:35


Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3826] Re: ループしているプロセスの停止について

Masashi Umezawa
こんにちは
梅澤です。

すでにループしてしまっているイメージをなんとか救いたいということでしたら、
私であればまず、LineMorphのopenInWorldを一時的にoverrideします。

LineMorph>>openInWorld
    ^self

その後で、ProcessBrowserを使ってプロセスを殺します。
Worldメニューのデバッグ->open process browserです。

優先度40のプロセスがおそらく2つ上がっていると思います。the UI processの
ほうはMorphicのおおもとのループですから止めてはいけません。

Delayでwaitしながら進んでいるプロセスを選択してterminateさせます。

プロセスを殺した後で、LineMorphのopenInWorldを消しておけばよいでしょう。

ProcessBrowserについて詳しくは「自由自在」の12章です。

久保 道 <[hidden email]> wrote:

> 阿部さん、さっそく教えていただいて、
> ありがとうございました。
> ただ、前回書きましたように私の場合は、
> ご指示くださったように
> 「まずは変数に入れたほうが良い」という点が
> できていなかったので、困っています。
> 最終的には必要なcodeだけ取り出して
> 別につくりなおすことにします。
> お返事遅れて失礼いたしました。
> 久保 道
> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]]
> On Behalf Of Kazuhiro ABE
> Sent: Thursday, February 07, 2008 4:14 PM
> To: Squeak discussion in Japanese
> Subject: [Squeak-ja: 3816] Re: ループしているプロセスの停止について
>
> 阿部@新百合です。
>
> いきなりforkを送ると、あとでそのプロセスを捕まえにくくなるので、まずは変
> 数に入れたほうが良いと思います。
>
> arm := LineMorph from: 290@300 to: 710@300  color: Color black width: 5.
> process := [[ arm openInWorld.
>    ( Delay forSeconds: 1) wait] repeat] newProcess.
> process resume
>
> これを終了するときは以下のようにします。
>
> process terminate
>
> 他どのようなメソッドがあるかはProcessクラスのインスタンスメソッドを見てく
> ださい。
> forkは単なる予約語ではなく、メッセージですから、ブロックにforkを送ったと
> きになにが起こっているかを考える必要があります。
> ワークスペースなどでforkを選択し、Alt+bを押すとその定義を調べることができ
> ます。
> せっかく中身を参照できるわけですから、今回の問題に限らず、分からないこと
> があったら、中を調べてみるのは良い習慣だと思います。
>
> また、自由自在では一章を費やして並行処理について解説しています(第12章)。
>
>  //abee
> --
> 阿部 和広  EMAIL [hidden email]
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.516 / Virus Database: 269.19.21/1267 - Release Date: 2008/02/08
> 20:12
>
>
> No virus found in this outgoing message.
> Checked by AVG.
> Version: 7.5.516 / Virus Database: 269.20.5/1279 - Release Date: 2008/02/14
> 18:35
>



---
[:masashi | ^umezawa]
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3846] Re: ループしているプロセスの停止について

kubo-o
梅澤さん、ありがとうございました。
ご教示いただいたようにして、
すっかりきれいに消えました。
戯れに?processをさわって、
お手数をかけました。
おかげさまで、またSqueakの
奥深さを垣間見た気がして、
うれしいです。
久保 道

-----Original Message-----
From: [hidden email] [mailto:[hidden email]]
On Behalf Of Masashi Umezawa
Sent: Friday, February 15, 2008 1:53 PM
To: Squeak discussion in Japanese
Subject: [Squeak-ja: 3826] Re: ループしているプロセスの停止について

こんにちは
梅澤です。

すでにループしてしまっているイメージをなんとか救いたいということでしたら、
私であればまず、LineMorphのopenInWorldを一時的にoverrideします。

LineMorph>>openInWorld
    ^self

その後で、ProcessBrowserを使ってプロセスを殺します。
Worldメニューのデバッグ->open process browserです。

優先度40のプロセスがおそらく2つ上がっていると思います。the UI processの
ほうはMorphicのおおもとのループですから止めてはいけません。

Delayでwaitしながら進んでいるプロセスを選択してterminateさせます。

プロセスを殺した後で、LineMorphのopenInWorldを消しておけばよいでしょう。

ProcessBrowserについて詳しくは「自由自在」の12章です。

久保 道 <[hidden email]> wrote:

> 阿部さん、さっそく教えていただいて、
> ありがとうございました。
> ただ、前回書きましたように私の場合は、
> ご指示くださったように
> 「まずは変数に入れたほうが良い」という点が
> できていなかったので、困っています。
> 最終的には必要なcodeだけ取り出して
> 別につくりなおすことにします。
> お返事遅れて失礼いたしました。
> 久保 道
> -----Original Message-----
> From: [hidden email]
[mailto:[hidden email]]

> On Behalf Of Kazuhiro ABE
> Sent: Thursday, February 07, 2008 4:14 PM
> To: Squeak discussion in Japanese
> Subject: [Squeak-ja: 3816] Re: ループしているプロセスの停止について
>
> 阿部@新百合です。
>
> いきなりforkを送ると、あとでそのプロセスを捕まえにくくなるので、まずは変
> 数に入れたほうが良いと思います。
>
> arm := LineMorph from: 290@300 to: 710@300  color: Color black width: 5.
> process := [[ arm openInWorld.
>    ( Delay forSeconds: 1) wait] repeat] newProcess.
> process resume
>
> これを終了するときは以下のようにします。
>
> process terminate
>
> 他どのようなメソッドがあるかはProcessクラスのインスタンスメソッドを見てく
> ださい。
> forkは単なる予約語ではなく、メッセージですから、ブロックにforkを送ったと
> きになにが起こっているかを考える必要があります。
> ワークスペースなどでforkを選択し、Alt+bを押すとその定義を調べることができ
> ます。
> せっかく中身を参照できるわけですから、今回の問題に限らず、分からないこと
> があったら、中を調べてみるのは良い習慣だと思います。
>
> また、自由自在では一章を費やして並行処理について解説しています(第12章)。
>
>  //abee
> --
> 阿部 和広  EMAIL [hidden email]
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.516 / Virus Database: 269.19.21/1267 - Release Date:
2008/02/08
> 20:12
>
>
> No virus found in this outgoing message.
> Checked by AVG.
> Version: 7.5.516 / Virus Database: 269.20.5/1279 - Release Date:
2008/02/14
> 18:35
>



---
[:masashi | ^umezawa]

No virus found in this incoming message.
Checked by AVG.
Version: 7.5.516 / Virus Database: 269.20.9/1292 - Release Date: 2008/02/21
16:09


No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.516 / Virus Database: 269.20.9/1294 - Release Date: 2008/02/22
18:39