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#、异步和线程池的深入文章:运行时可能会使用线程池,即线程不会被销毁,而是等待另一个异步任务。此技术有助于运行时缩短启动新异步进程的时间。操作,因为创建新线程可能会消耗一些时间和资源