2

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

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

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

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

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 回答