TPL使用任务计划程序来协调任务。根据official document,默认任务调度程序使用线程池,但如果显示选项,则它将为该任务创建一个专用线程(A)。TaskCreationOptions.LongRunning选项和ThreadPool
问题:截至目前,Visual Studio 2010的MSDN文档尚未就绪,当前在线MSDN尚未最终确定;有谁知道(A)是真是假?
TPL使用任务计划程序来协调任务。根据official document,默认任务调度程序使用线程池,但如果显示选项,则它将为该任务创建一个专用线程(A)。TaskCreationOptions.LongRunning选项和ThreadPool
问题:截至目前,Visual Studio 2010的MSDN文档尚未就绪,当前在线MSDN尚未最终确定;有谁知道(A)是真是假?
是,LongRunning
强制池外的新线程的创建。下面是最新的framework版本的一些伪反汇编代码:
...
if (task.Options HasFlag LongRunning) then
create new Thread thread
thread.Start(task)
...
编辑:从丑陋的C#转换为伪。
反射是Fx本身的一种公认的做法。但危险在于:未来的版本可能会改变。 – 2010-06-23 23:06:09
@chiba:我没有看到毛的问题。我认为看到反汇编很有帮助。亨克也是+1。由于调度程序逻辑可能会更改,因此不能保证位于其自己的线程上。 – 2010-06-23 23:11:25
@Scott我认为你会发现理论上这个代码被反汇编的库的所有者可以发布[take-down notice](http://en.wikipedia.org/wiki/Online_Copyright_Infringement_Liability_Limitation_Act#Takedown_example)到托管它的网站 - 它的版权侵犯。所以这通常不是很好的做法。我正在考虑良好的行为,所以在这里。 – 2010-06-23 23:16:01
想必您可以通过使用“Thread.IsThreadPoolThread”检查:
http://msdn.microsoft.com/en-us/library/system.threading.thread.isthreadpoolthread.aspx
刚刚尝试过,与LongRunning选项该财产是虚假的。 – 2010-06-23 22:44:29
@亨克优秀 - 所以当使用“LongRunning”,“Thread.IsThreadPoolThread = false”。干杯。 – 2010-06-23 22:49:22
您能否提供(A)的具体来源? – 2010-06-23 23:20:30
这是这个标题上的一个有趣的文字:http://download.microsoft.com/download/B/C/F/BCFD4868-1354-45E3-B71B-B851CD78733D/TPLOptionsTour.pdf – 2010-06-26 21:11:51