我有一个程序,其中一个函数需要太长时间,比如longfunc
(在longfunc中完成的具体操作是生成一堆文件)。所以我想使用thread
异步执行此longfunc
。但是,当我写下面的内容时,它并没有真正执行longfunc
,因为没有生成文件......
(thread
(λ ()
(longfunc arg1 arg2)))
当我得到上面的线程描述符时,测试线程是否正在运行,它说是真的,这太奇怪了......
任何人都可以解释线程发生了什么吗?是因为一些内部调度方案?如何让线程正常运行?
答案 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"))))
应该显示两个线程一次运行。