2 Stimmen

Warum wird der Thread nicht ausgeführt (Racket)

Ich habe ein Programm und eine Funktion davon dauert zu lange, sagen wir longfunc (die spezifische Sache, die in der longfunc gemacht wird, sind eine Menge generierte Dateien). Deshalb möchte ich thread verwenden, um diese longfunc asynchron auszuführen. Jedoch, wenn ich es wie folgt geschrieben habe, wird longfunc nicht wirklich ausgeführt, da keine Dateien generiert werden...

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

Und wenn ich den obigen Thread-Descriptor erhalte und teste, ob der Thread läuft, sagt er true, das ist so seltsam...

Kann jemand erklären, was mit dem Thread passiert? Liegt es an irgendeinem inneren Planungsschema? Wie kann man den Thread normal laufen lassen?

4voto

John Clements Punkte 16220

Der Thread sollte normal starten und laufen. Zum Beispiel wird das Ausführen dieses Programms angezeigt.

#lang racket

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

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

sollten beide Threads gleichzeitig laufen lassen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X