Multithreading 异步线程问题

Multithreading 异步线程问题,multithreading,asynchronous,f#,Multithreading,Asynchronous,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)

我正在学习外语,对这门语言很感兴趣

我尝试创建异步表达式以异步运行

比如说

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#异步


感谢您的帮助

线程是从线程池中获取的(顺便说一句,这就是为什么线程多于操作的原因)

在应用程序终止之前,该池一直存在

没什么好担心的


编辑有关F#、异步和线程池的深入文章:

运行时可能会使用线程池,即线程不会被销毁,而是等待另一个异步任务。此技术有助于运行时缩短启动新异步进程的时间。操作,因为创建新线程可能会消耗一些时间和资源