为什么线程没有执行(Racket)

时间:2012-08-29 21:08:12

标签: scheme racket

我有一个程序,其中一个函数需要太长时间,比如longfunc(在longfunc中完成的具体操作是生成一堆文件)。所以我想使用thread异步执行此longfunc。但是,当我写下面的内容时,它并没有真正执行longfunc,因为没有生成文件......

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

当我得到上面的线程描述符时,测试线程是否正在运行,它说是真的,这太奇怪了......

任何人都可以解释线程发生了什么吗?是因为一些内部调度方案?如何让线程正常运行?

1 个答案:

答案 0 :(得分: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"))))

应该显示两个线程一次运行。

相关问题