2

我的情况是我有以下方法,它使用 SyncLock 来确保一次一个线程写入文件。

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),一个或多个线程同时写入文件。为什么会这样?

4

1 回答 1

0

我没有证据,但它可能是在说真话。如果任何其他进程打开文件而不共享它,并且有 500 个或更多线程试图打开它,那么文件很可能会被其中一个锁定......

于 2012-12-01T06:56:26.870 回答