Aracılığıyla paylaş


İş parçacığı havuzu (C# ve Visual Basic)

A iş parçacığı havuzu arka planda çeşitli görevleri gerçekleştirmek için kullanılan iş parçacıklarını topluluğudur.(Bkz: İş parçacığı (C# ve Visual Basic) arka plan bilgileri için.) Bu, birincil iş parçacığı gerçekleştirip diğer görevleri için serbest bırakır.

İş parçacığı havuzu, genellikle sunucu uygulamalarında görevli olduğu.İstek zaman uyumsuz olarak, birincil iş parçacığını bağlayarak veya sonraki istekleri işlemeyi ertelenmesine neden olmadan işlenebilir, gelen her istek iş parçacığı için iş parçacığı havuzu atanır.

Bir iş parçacığı havuzu, kendi görev tamamlandığında, bekleyen iş parçacığı, bir sıraya burada kullanılabilmesinden döndürülür.Bu yeniden kullanım maliyeti her görev için yeni bir iş parçacığı oluşturma önlemek uygulamaları etkinleştirir.

İş parçacığı havuzu iş parçacığı sayısı genellikle vardır.Tüm iş parçacıkları meşgul ise, iş parçacığı kullanılabilir olduğunda bunlar verilebildiğini kadar ek görevler sırasına yerleştirilir.

Kendi iş parçacığı havuzu uygulayabilirsiniz, ancak tarafından sağlanan iş parçacığı havuzunu kullanmak daha kolaydır.net Framework ile birlikte ThreadPool sınıfı.

İş parçacığı havuzu ile çağrı ThreadPool.QueueUserWorkItem bir temsilci yöntemiyle çalıştırmak istediğiniz yordamın ve Visual Basic ya da C# iş parçacığı oluşturur ve sizin yordamını çalıştırır.

İş parçacığı havuzu oluşturma örneği

Aşağıdaki örnek, iş parçacığı havuzu çeşitli görevleri başlatmak için nasıl kullanabileceğinizi gösterir.

Public Sub DoWork()
    ' Queue a task.
    System.Threading.ThreadPool.QueueUserWorkItem(
        New System.Threading.WaitCallback(AddressOf SomeLongTask))
    ' Queue another task.
    System.Threading.ThreadPool.QueueUserWorkItem(
        New System.Threading.WaitCallback(AddressOf AnotherLongTask))
End Sub
Private Sub SomeLongTask(ByVal state As Object)
    ' Insert code to perform a long task.
End Sub
Private Sub AnotherLongTask(ByVal state As Object)
    ' Insert code to perform another long task.
End Sub
public void DoWork()
{
    // Queue a task.
    System.Threading.ThreadPool.QueueUserWorkItem(
        new System.Threading.WaitCallback(SomeLongTask));
    // Queue another task.
    System.Threading.ThreadPool.QueueUserWorkItem(
        new System.Threading.WaitCallback(AnotherLongTask));
}

private void SomeLongTask(Object state)
{
    // Insert code to perform a long task.
}

private void AnotherLongTask(Object state)
{
    // Insert code to perform a long task.
}

Bir iş parçacığı havuzu avantajı bağımsız görev yordamına durumu nesnesinde iletebilirsiniz ' dir.Aramakta yordamı birden fazla bağımsız değişken gerekiyorsa, bir yapı ya da bir sınıfın örneğini çevirebilirsiniz bir Object veri türü.

İş parçacığı havuzu parametreleri ve dönüş değerleri

Bir iş parçacığı havuzu iş parçacığından değerleri döndüren basit değil.Değerleri döndüren bir işlev çağrısından standart yol verilmez, çünkü Sub yordamları bir iş parçacığı havuzu için sıraya alınması yordamı yalnızca türündedir.Tek yönlü, parametreleri sağlayabilir ve dönüş değerleri olan parametreleri döndürme değerleri kaydırma tarafından ve yöntemleri bir sarmalayıcı sınıf açıklandığı gibi Parametreleri ve dönüş değerleri çok iş parçacıklı yordamlar (C# ve Visual Basic).

İsteğe bağlı kullanarak sağlayan parametreleri ve dönüş değerleri için easer bir yol olan ByVal durum nesnesi değişkeni QueueUserWorkItem yöntemi.Bir sınıfın örneğini referansı geçirmek için bu değişkeni kullanırsanız, örnek üyeleri iş parçacığı havuzu iş parçacığı tarafından değiştirilebilir ve dönüş değerleri olarak kullanılır.

İlk bakışta değeri tarafından geçirilen bir değişken tarafından başvurulan bir nesne üzerinde değişiklik yapmadan belirgin olmayabilir.Nesne başvurusu değerine göre geçirdiğinden bunu yapabilirsiniz.Nesne başvurusu tarafından başvurulan nesne üyeleri değişiklik yaptığınızda, değişiklikler gerçek sınıf örneğine uygulanır.

Yapıları, durumu nesneleri içindeki değerleri dönmek için kullanılamaz.Zaman uyumsuz işlem yaptığı değişiklikler özgün yapısı üyeleri değiştirmeyin, yapılar değer türüdür çünkü.Dönüş değerleri gerekli parametreleri sağlamak için yapıları kullanın.

Ayrıca bkz.

Görevler

Nasıl yapılır: iş parçacığı havuzu (C# ve Visual Basic) kullanın

Başvuru

İş parçacığı eşitleme (C# ve Visual Basic)

QueueUserWorkItem

System.Threading

ThreadPool

Kavramlar

Çok iş parçacıklı uygulamalar (C# ve Visual Basic)

Diğer Kaynaklar

İş parçacığı (C# ve Visual Basic)

NASIL yapılır: Visual C# kullanarak bir iş öğesi iş parçacığı havuzuna gönderme