2

私の場合は、SyncLock を使用して一度に 1 つのスレッドによるファイルの書き込みを保証する次のメソッドがあります。

Private Shared lockThis As New Object 

Public Sub Process()
  SyncLock lockThis
    File.AppendAllText("c:\jamo\foo.txt","foo")
  End SyncLock 
End Sub 

私は同時に実行されている多くのスレッドを使用しています:

Public Sub CreateThreads()
  Dim trd as Thread
  Dim X as Integer = 10
  For i as integer = 1 to X
    trd = New Thread(AddressOf Process)
    trd.Start()
  Next Sub
End Sub

私の問題は、X が大きい場合 (500 など)、1 つ以上のスレッドが同時にファイルに書き込むことです。なぜこれが起こっているのですか?

4

1 に答える 1

0

証拠はありませんが、真実を語っている可能性があります。他のプロセスがファイルを共有せずに開いた場合、500 以上のスレッドがそのファイルを開こうとすると、ファイルはそのうちの 1 つに対してロックされる可能性があります...

于 2012-12-01T06:56:26.870 に答える