2

私はプログラムを持っていますが、その関数の 1 つに時間がかかりすぎますlongfunc(longfunc で実行される特定の処理は、生成されたファイルの束です)。threadだから私は非同期で実行された thisを使いたいですlongfunc。しかし、以下のように書いたところ、longfuncファイルが生成されないため、実際には実行されません...

(thread (λ () (longfunc arg1 arg2)))

上記のスレッド記述子を取得し、スレッドが実行されているかどうかをテストすると、true と表示されます。これはとても奇妙です...

スレッドで何が起こっているのか説明できる人はいますか? 何らかの内部スケジューリング スキームが原因ですか? スレッドを正常に実行する方法は?

4

1 に答える 1

4

スレッドが開始され、正常に実行されます。たとえば、このプログラムを実行すると

#lang racket

(thread (lambda ()
          (for ([i 10])
            (sleep 2)
            (printf "thread 1\n"))))


(thread (lambda ()
          (for ([i 20])
            (sleep 1)
            (printf "thread 2\n"))))

一度に実行されている両方のスレッドが表示されるはずです。

于 2012-08-29T22:12:18.983 に答える