首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VB.NET线程安全列表?

VB.NET线程安全列表?
EN

Stack Overflow用户
提问于 2011-01-20 06:45:07
回答 1查看 715关注 0票数 0

VB.NET、.NET 4

大家好,

我有一个(字节)列表,其中填充了SerialPort.DataRecieved事件时串行缓冲区中的字节。然后,我尝试解析数据。解析过程的一部分涉及删除列表的元素(字节)。我应该担心在解析过程中可能引发的DataRecieved事件修改列表吗?我意识到这可能取决于我试图做什么,但是,假设我应该关注(例如,解析过程需要List.Count在解析完成之前保持不变),我应该如何确保任何Add调用都等到解析器完成?我想答案是类似于SyncLock,但我从来没有真正理解过SyncLock是如何工作的。任何基本的帮助都将不胜感激!

提前谢谢你,布赖恩

EN

Stack Overflow用户

回答已采纳

发布于 2011-01-20 06:51:20

嗯,这不是CPU周期的最大利用,从列表中删除字节(字节)是O(n)操作。使整个处理步骤为O(n^2)。要在cpu上施加任何压力仍然是相当困难的,因为串行端口非常慢。只有当你测量出它是一个性能问题时,你才应该修改工作代码。

如果还没有,那么考虑从旧的数组或列表创建一个新的数组或列表。这是O(n),考虑到缓慢的数据速率,额外的存储不会有什么影响。代码也应该更干净。

就线程而言,请确保在DataReceived处理程序中执行此操作。这是线程安全的,并且避免在调用时对UI线程施加过大的压力。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4741683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档