Ist es möglich, während der Ausführung des Delegaten durch einen Kontextwechsel ausführbare Threads zu wechseln?Kann P-Linq während der Delegate-Ausführung Threads wechseln?
Ich habe dieses Snippet in LinqPad ein paar Mal versucht, und es trifft nicht die new Exception()
Zeile, die darauf hinweist, dass es auf dem ursprünglichen Thread weitergehen wird, aber vielleicht ist mein kleiner Test hier nicht geeignet, dies zu testen, I ' Ich bin mir einfach nicht sicher.
void Main()
{
var list = Enumerable.Range(1,100000);
list.AsParallel().ForAll(i=>
{
var threadId = System.Threading.Thread.CurrentThread.ManagedThreadId;
System.Threading.Thread.Sleep(0); // allow a context switch
work(i,threadId);
});
"Complete".Dump();
}
void work(int num,int threadId)
{
var currentId = System.Threading.Thread.CurrentThread.ManagedThreadId;
if(threadId!=currentId)
{
throw new Exception();
}
}
Wunderbar, würden Sie zufällig einen MSDN-Link für weitere Informationen haben? Ich konnte nichts finden. – asawyer
@asawyer Ich weiß nicht, wo das in MSDN oder den Sprachspezifikationen dokumentiert ist (obwohl ich sicher bin, dass Sie es irgendwo finden werden). Ich könnte dir nur Zitate aus anderen Q/A Foren oder Blogs geben. – Servy