我有一个程序从每秒约500到700次的非托管代码接收数据。这些数据中的一部分是有用的,需要处理,其中一些数据是无用的,并立即遭到拒绝。要找出接收的数据是否有用,我使用字符串列表。 我的问题是:当我在List上使用锁来删除一些或所有条目时,我会得到一大堆等待搜索列表的线程?锁是否创建了一堆线程? /这是一个避免锁的正确方法
由于删除整个列表或其中的部分内容不被连续使用,我现在使用一个静态布尔值。当我开始删除时,我将Boolean设置为false,并且在搜索列表之前所有数据都被忽略。当我完成后,我把布尔变回真。 这是一个恶作剧的解决方法还是有更好的? (我也问这个,因为测试是很花时间在这一点上消费)
编辑
该程序是用来检查是否在列表中的字符串是正确的。非托管代码发送数据,这发生在一个新线程上。如果数据很有用,它会显示出来,用户可以验证这一点。如果数据变成显示但不是有用的,用户可以从列表中删除主线程中发生的字符串。
你能否提供关于你的应用程序的更多细节 - 目前还不清楚。哪些线程和多少线程添加到列表中?哪些线程正在删除数据?哪些线程正在处理有用的数据?在处理完有用数据后会发生什么? – 2010-01-04 15:08:01