SORU
27 Mart 2010, CUMARTESİ


İş için Birden çok iş Parçacığı tüm bitene kadar bekleyin sonra Spawn

sadece bir tavsiye: "uygulama" çoklu görevler. ile ilgili en iyi istiyor

örnek olarak, bir C var# Başlangıçta çeşitli veri okuma uygulaması "type" bizim veritabanında tablo ve uygulama etrafında geçen bir koleksiyon bilgileri depolar. bu bilgi gereklidir bu veritabanı her zaman isabet etmemizi engelliyor.

şu anda uygulama 10 tablolar senkronize veri okuma. gerçekten uygulama okumak farklı bir iş parçacığı paralel olarak çalışan tüm her masadan istiyorum. bu uygulama, başlangıç ile devam etmeden önce bütün konuları tamamlamak bekleyin.

ben BackGroundWorker içine baktı ama sadece yukarıdaki gerçekleştirilmesi konusunda biraz tavsiye istiyorum.

  1. Bu yöntem bizim uygulama başlangıç zamanı hızlandırmak için mantıklı geliyor
  2. Nasıl en iyi tüm konuları her iş parçacığının iş birbirinden bağımsız olduğunu akılda tutarak işleyebilir biz, bütün bu konuları devam etmeden önce tamamlamak için beklemek gerekir.

ileri bazı cevaplar bekliyorum

CEVAP
2 NİSAN 2010, Cuma


Bunun için benim tercihim tek bir WaitHandle üzerinden bu işi ve bir sayaç kilitleme önlemek için Kilitli kullanmak için:

class Program
{
    static void Main(string[] args)
    {
        int numThreads = 10;
        ManualResetEvent resetEvent = new ManualResetEvent(false);
        int toProcess = numThreads;

        // Start workers.
        for (int i = 0; i < numThreads; i  )
        {
            new Thread(delegate()
            {
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
                // If we're the last thread, signal
                if (Interlocked.Decrement(ref toProcess) == 0)
                    resetEvent.Set();
            }).Start();
        }

        // Wait for workers.
        resetEvent.WaitOne();
        Console.WriteLine("Finished.");
    }
}

Bu iyi çalışıyor, ve ipler, kilitleme tanıtan olmadan işleme herhangi bir sayı için ölçekler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FlippinWindows | #1 Windows Tutorial Channel!

    FlippinWindo

    23 Mayıs 2010
  • TROPFEST

    TROPFEST

    27 Mart 2007
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006