我正在学习F#并对这门语言非常感兴趣
我尝试创建异步表达式以异步运行。
例如
let prop1=async{
for i=0 to 1000000 do ()
MessageBox.Show("Done")
}
let prop2=async{
for i=0 to 1000000 do ()
MessageBox.Show("Done2")
}
Async.Start(prop1)
Async.Start(prop2)
当我运行程序时,我得到了程序进程的线程数增加,从6到8,当我完成关闭2消息框时,进程似乎没有破坏那些创建的线程,计数也是8,发生了什么或者我对F#asynchronous
有误解感谢您的帮助
答案 0 :(得分:2)
线程是从线程池中获取的(这就是为什么线程多于动作的顺序)。
池一直存在,直到应用程序终止。
无需担心
编辑有关F#,async 和 ThreadPool的一篇优秀深入文章:http://www.voyce.com/index.php/2011/05/27/fsharp-async-plays-well-with-others/
答案 1 :(得分:0)
运行时可能使用线程池,即线程不会被销毁,而是等待另一个异步任务。此技术有助于运行时减少启动新异步的时间。操作,因为创建新线程可能会消耗一些时间和资源。