dosyaları yazma görevi adanmış ayrı çalışan iş parçacığı (ler) var olduğunu. Diğer iş parçacıklarınızdan birisinin veri yazması gerektiğinde, verileri ArrayList'e (veya başka bir kapsayıcıya/sınıfa) eklemek için bir işlev çağırmalıdır. Bu işlevin içinde, aynı anda birden fazla iş parçacığının yürütülmesini engellemek için üstte bir kilit ifadesi bulunmalıdır. ArrayList'e referans ekledikten sonra geri döner ve işleri ile devam eder. Yazma iş parçacığı (ları) işlemek için birkaç yol vardır. Muhtemelen en basit olanı, sonunda bir uyku ifadesiyle sonsuz bir döngüye sokmaktır, böylece cpu (larınızı) çiğnemez. Başka bir yol, iş parçacığı ilkellerini kullanmak ve yazılacak daha fazla veri olmadığında bekleme durumuna geçmektir. Bu yöntem, iş parçacığı ManualResetEvent.Set yöntemi gibi bir şeyle etkinleştirmeniz gerektiğini gösterir.
okumak ve .NET dosyaları yazmak için birçok farklı yolu vardır. Bir kıyaslama programı yazılı ve benim blog sonuçları verir adres:
http://designingefficientsoftware.wordpress.com/2011/03/03/efficient-file-io-from-csharp
Sana performansı gerekirse, Windows ReadFile ve WriteFile yöntemlerle öneriyoruz. Karşılaştırma sonuçlarım, senkronize G/Ç yöntemleri ile daha iyi performans gösterdiğinizi gösterdiğinden, asenkronize yöntemlerden herhangi birini kullanmayın.
Bob Bryan MCSD
kaydeder kod tercih edenler için –
Evet, eşzamansız yazmaların çarpışmasını nasıl önler? –
Çok iş parçacıklı bir sistemde herhangi bir kaynak çekişme ile aynı şekilde. Kilitler. ReadWriterLock (veya 4.0/Parallel Extensions + 3.5 ile ReaderWriterLockSlim), birden fazla okunmanın eşzamanlı olarak gerçekleşmesine izin verir, böylece istediğiniz bir şey varsa, onu kullanın. –