我一直在閱讀並行編程,甚至現在仍然對整個概念有點困惑。比方說,我有一個約5個類互相交互的單個項目,並且方法和變量中的局部變量可以被單個類中的所有方法訪問,甚至可以通過實例化訪問所有類的1或2個變量。 現在使用線程我知道全局變量將被多個線程覆蓋,如果沒有鎖定應用,但方法/函數沒有本地變量,對不對? 因此,如果我作爲一個新進程多次運行項目,那麼這些方法和變量將是線程安全的,並且不會發生數據損壞? 因此,爲了使用任務工廠來實現並行編程,如果我創建了一個基本上創建任務的項目,並且每個任務基本上都在運行另一個項目的實例,那麼變量和數據是否應該不是線程安全和安全的? 但是如果我有輸出文件,並且他們按輸出& datetime.now.tostring命名,會不會有衝突問題,並且我知道我在試用它時已經看到了這種情況。在.net 4.0中並行編程
dim factory as new taskfactory
factory.startnew(addressof projectinstance.main)
現在這對大多數人來說可能是常識,所以請在這裏溫柔批評。非常感謝任何迴應。
編輯:
這是在其中一個類文件的創建模塊:
Private Sub createXML()
num += 1
Dim fileList As New ArrayList
Dim counter As Integer = 0
Dim file As String = Module1.infile
xmlfile = directoryPath & "\Feed" & DateTime.Now.ToUniversalTime.ToString("yyyyMMddhhmmss") & endExtension
fileList.Add(xmlfile)
Thread.Sleep(2000)
Dim doc As XmlDocument = New XmlDocument
xwriter = New XmlTextWriter(xmlfile, Encoding.UTF8)
xwriter.Formatting = Formatting.Indented
xwriter.Indentation = 2
xwriter.WriteStartDocument(True)
xwriter.WriteStartElement("Posts")
Dim j As Integer = 0
For i As Integer = 0 To gXmlList.Count() - 1
j += 1
parseXML(gXmlList(i))
....
感謝您的回覆,真的很感激....在MyApp的定義全局變量將包括我的輸出文件我生成這樣在技術上那麼這將是確定......因爲每個任務需要一個輸入文件和使用該輸入文件創建相應的輸出文件。這是正確的嗎? – vbNewbie 2011-03-31 19:14:36
我更新了我的答案。 results_ {rank} .txt文件不是全局的,它們對每個任務都是本地的。如果你想要一個單一的results.txt文件,那麼這將被視爲全局狀態。請注意,全局只讀狀態爲OK。全局寫入或讀取/寫入不是。 – 2011-03-31 19:53:59