2012-12-26 22 views
5

parçacığı ben olduğunu varsayalım. Sonra ne olacak: işlem bitti ve daha sonra başka bir etkinlik başlatıldı veya belki yeni olay hemen yeni bir iş parçacığına mı atıldı?olay ve

+0

Ne tür bir nesne 'ethernet_adapter' nedir? –

+0

@JimMischel bu bir üçüncü parti kitaplık türü 'ICaptureDevice'. Sanırım cevabı aldım. – ren

cevap

2

Kabul etmemelisiniz. Olay türüne göre (ethernet_adapter nesnesinin) bağlı olarak her şey olabilir. o senkronize işlemler, cari işlem devam dek

, yeni olay gündeme edilmeyecektir. o uyumsuz işlem ise

, yeni olay anında artırılacaktır. (Sizin örnekte olduğu gibi)

protected virtual void OnPacketArrived(PacketArrivedEventArgs e) 
{ 
    EventHandler<PacketArrivedEventArgs> handler = this.PacketArrived; 

    if (handler != null) 
    { 
     handler(this, e); 
    } 
} 

Elveda işleme senkron abone tüm abonelere üzerindeki iç numaralandırma engeller:

2

Bu, senkronize bir işlemdir. Başka bir iş parçacığı üzerinde gerçekleşecek tek yol, olayı yükselten nesnenin başka bir iş parçacığında ya da işleyicide yapmasıdır. Bunu yapmak için çeşitli yollar vardır, ancak .NET 4.

Kullanılıyorsa, genellikle System.Threading.Tasks.Task kullanılması tercih edilir. Uygulamanızın nasıl davranmasını istediğinizi dikkatlice düşünün. Her paketin yeni bir iş parçacığı üzerinde işlenmesi, paketlerin sırayla işlenmesine neden olabilir. Onları sıraya koymak ve bu noktada onları işlemek için bir arka plan iş parçacığına sahip olmak isteyebilirsiniz. Veya hiç bir şey yapmanıza gerek olmayabilir. followes olarak

0

Eğer ThreadPool'da bütün görevi sıraya ekleyebilirsiniz. Her iş parçacığı için görev (.net 4.0) oluşturabilir veya .

+0

Bu, OP sorusuyla nasıl ilgilidir? – Tilak

+0

her uzun işlem öğesi, threadpool'da sıraya girebilir ve buna göre sunulur. Umarım problemi anladım. – paritosh

+0

Sanırım soru şudur: "davranış nedir" ve "uyumsuz davranışı nasıl yapar" – Tilak

0

Söylentilere ethernet_adapter sınıfında bir yöntem yoktur. FAKAT! ethernet_adapter, her seferinde farklı bir iş parçacığı üzerinde çağırırsa, OnPacketArrived numaralı çağrıları engelleyemeyebilir - böylece iki eşzamanlı uzun işlem ve benzerleri elde edersiniz.

Örnek olarak, Socket uygulamasına bakın: bu, eşzamansız yöntemler, IOCP iş parçacığı üzerinde başlatılacak geri çağırma geri çağrılarına neden olur - IO ThreadPool'da her seferinde farklı olarak.

İlgili konular