【发布时间】:2010-11-16 17:50:12
【问题描述】:
我有一个包含多线程应用程序中使用的 List(of T) 的类。我有三种方法 Get、Add 和 Remove,这些方法可以访问和修改 List(of T)。每当我查询所需对象以及添加或删除对象时,我都使用 SyncLock 锁定 m_List。 但是我很好奇,当我添加对象或删除对象而不是搜索所需对象时,通过简单地锁定 m_List 是否会提高性能?
Public Shared sub Add(SomeObject as object)
SyncLock ctype(m_List, IList).SyncRoot
m_List.add(SomeObject)
end SyncLock
end sub
Public Shared sub Remove(SearchString as string)
SyncLock ctype(m_List, IList).SyncRoot
m_List.RemoveAll(function(o as SomeObject) o.SomeProperty = SearchString)
end SyncLock
end Function
Public Shared Function Get(SearchString as string) as SomeObject
'The Commented out code is what I am thinking of removing...
'SyncLock ctype(m_List, IList).SyncRoot
Dim FoundObjectList = m_List.where(function(o as SomeObject) o.SomeProperty = SearchString)
if FoundObjectList.count > 0 then
If FoundObjectList(0).CreateDate < Now.AddMinutes(5) then
Remove(FoundObjectList(0).SomeProperty)
Return nothing
end if
else
Return FoundObjectList(0)
End if
Return Nothing
'end SyncLock
end sub
【问题讨论】:
标签: .net vb.net multithreading locking synclock