共有ArrayListの競合回避方法
- 題名: 共有ArrayListの競合回避方法
- 著者: ドタばた
- 日時: 2004/10/09 12:01:52
- ID: 6603
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 共有ArrayListの競合回避方法
- 著者: 管理人
- URL: http://dobon.net
- 日時: 2004/10/12 3:49:08
- ID: 6638
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 共有ArrayListの競合回避方法
- 著者: ドタばた
- 日時: 2004/10/12 21:55:33
- ID: 6658
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
お世話に成ります。
ArrayListを共有する場合の競合回避方法に付いてお聞きします。
Collections.ArrayList.Synchronized(al) でラップされたArrayListを扱うメソッドでは同期処理をしなくても競合は発生しないのでしょうか?
例:
Public Class testArrayList
'このクラスは全て共有メソッドで作成。
'アレイリストの宣言
Public Shared al As New Collections.ArrayList
'同期されている (スレッド セーフな) ArrayList ラッパー
Public Shared Syncdal As Collections.ArrayList = Collections.ArrayList.Synchronized(al)
Public Shared Function addToTail(ByVal data As Test) As Boolean
'リストの末尾に追加する
'***alの扱い 同期処理が必要と思う**************************
'Monitor.Enter(al)
'Try
' al.Add(data)
' addToTail = True
'Catch ex As Exception
' addToTail = False
'Finally
' Monitor.Pulse(al)
' Monitor.Exit(al)
'End Try
'***Syncdalの扱い 同期処理はいらないのかな?***************
Try
Syncdal.Add(data)
addToTail = True
Catch ex As Exception
addToTail = False
MsgBox(ex.ToString)
End Try
End Function
End Class
宜しくお願いします。