Frage

Wenn ich implementieren

WaitCallback waitCB = new WaitCallback(DisplayTime);
for (int i = 1; i <= 5; i++)
{
  ThreadPool.QueueUserWorkItem(waitCB, null);
  Thread.Sleep(2000);
}


    public void DisplayTime(object state)
    {
        Console.WriteLine("Current Time {0} ", DateTime.Now);
    }

(1) Bedeutet es, meine Arbeit in CLR Warteschlange gestellt wird?

(2) Will CLR zu verarbeiten, nachdem sie in der Warteschlange die bestehenden anhängigen Artikel Finishing?

(3) Wird die Zeit mein Element in der Warteschlange zu verarbeiten, ist nicht vorhersehbar?

War es hilfreich?

Lösung

  

(1) Bedeutet es, meine Arbeit in CLR Warteschlange gestellt wird?

Es wird eine Warteschlange eingereiht, so bald verarbeitet wird als ein Thread aus dem Pool zur Verfügung

  

(2) Will CLR zu verarbeiten, nachdem sie in der Warteschlange die bestehenden anhängigen Artikel Finishing?

Es kann zur gleichen Zeit ausgeführt wird, mehrere Jobs sein ... Sobald einer der Pool-Threads zur Verfügung, es verwendet wird, um das nächste Element aus der Warteschlange zu verarbeiten

  

(3) Wird die Zeit mein Element in der Warteschlange zu verarbeiten, ist nicht vorhersehbar?

Nein, zumindest nicht so einfach ... würden Sie müssen wissen, wie lange die Jobs in der Warteschlange auszuführen nehmen, und verfolgen jeden Job die Ausführungszeit eines bestimmten Jobs zu berechnen. Warum würden Sie wollen wissen, dass überhaupt?

Andere Tipps

wird Ihr Rückruf auf einem Threadpool-Thread ausgeführt werden, basierend auf, was Algorithmus die CLR verwendet Threads aus seinem Pool zuzuordnen und starten.

In Ihrem Beispiel werden die Rückrufe verarbeitet Nähe, um sofort und in einem scheinbar deterministisch. ändern, dass könnte jedoch leicht in Abhängigkeit vom Zustand des Threadpool. Wenn Ihr Prozess alle Fäden im Pool hatte verbraucht dann würde Ihr Rückruf nicht ausgeführt werden, bis ein Thread irgendwo anders fertig gestellt und war ihm zur Verfügung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top