适用于 .NET 的无锁和线程安全 IList

2023-12-23

是否有实现 IList 的无锁且线程安全的数据结构?

当然,无锁是指不使用 .NET 中的锁定原语而是使用互锁操作/原子操作来实现线程安全的实现... 显然在并发数据结构下没有一个......

有人见过漂浮在空中的吗?

我见过一个java实现氨基-CBBs http://amino-cbbs.sourceforge.net/,称为锁自由矢量 http://amino-cbbs.sourceforge.net/java_apidocs/org/amino/ds/lockfree/LockFreeVector.html但到目前为止,.NET 还没有任何进展。 有任何想法吗?


好吧,我在任何地方都找不到这样的课程;所以我试了一下 http://philosopherdeveloper.com/posts/boy-can-dream.html.

我的源代码ConcurrentList<T>类是可以在 GitHub 上找到 https://github.com/dtao/ConcurrentList.

它是无锁、线程安全的(我think,基于我的单元测试),并实现IList<T>.

It does not支持Insert, RemoveAt/Remove, or Clear.

我很高兴地发现我的实现(我独立提出的)与数据结构的实现非常相似由一些受人尊敬的人士出版 http://www2.research.att.com/~bs/lock-free-vector.pdf在软件的世界里。

有关实现本身的相当简短的讨论,请参见我最近的博客文章 http://philosopherdeveloper.com/posts/how-to-build-a-thread-safe-lock-free-resizable-array.html关于它。

目前,它根本没有记录,考虑到某些代码是多么“棘手”,这有点糟糕:(

如果您查看并发现错误或其他问题,请务必给我一个新的。

无论如何,可能值得您花时间检查一下。如果您这样做,请告诉我您的想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适用于 .NET 的无锁和线程安全 IList 的相关文章

  • 比较 LINQ to SQL 中的两个日期

    我有一个数据库 其中有一个名为会议的表 会议日期使用以下格式存储在此表中 May 2nd 2011 例如 格式为5 2 2011 我的要求是获取两个日期 例如 2011 年 4 月 25 日和 2011 年 5 月 2 日 之间的会议 并编
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • Handler、MessageQueue、Looper,它们都是运行在UI线程上的吗?

    我正在尝试解决线程问题 并且我知道我可能会使用Handler将消息 可运行对象发布到MessageQueue 这又被Looper并发送回Handler进行加工 如果我发帖到Handler在我的活动中 是Activity Handler Me
  • 如何使用 ProtoGen 从 proto 文件生成结构

    我们一直在使用 protobuf net ProtoGen 从 proto 文件生成 C cs 文件 我们希望代替类来生成结构 例如 DataContract public struct Entity1 ProtoMember 1 publ
  • 使用非字符串作为字符串(而不是自动使用 ToString)时如何显示错误?

    建议的重复确实是一个类似的问题 然而 答案只涵盖一种选择 禁用 ToString 本身 还有其他可能的解决方案 例如让 Visual Studio 警告我 或者不调用 ToString 仔细阅读那里的答案 他认为is调用 只是解释说没有办法
  • 替换全局热键

    我有一个位于托盘中的应用程序 我想定义多个热键来触发我的程序中的事件 我从 AaronLS 在这个问题中的出色回答中找到了灵感 使用C 设置全局热键 https stackoverflow com a 27309185 3064934 如果
  • 将列添加到新的数据行

    是否可以创建一个新的 DataRow 对象并在运行时向其中添加列 How can I specify column names for this data row object DataRow row new DataRow 不 DataR
  • 具有多个图像列表和图标/图像的列表视图

    我需要一种在列表视图上使用两个图像列表的方法 其中一个图像列表用于包含 16x16 图标的标题图标 另一个图像列表将在子项目中包含 32x32 缩略图 下图显示了我正在尝试做什么 我找到了解决这个问题的技巧 诀窍是在 32x32 画布上创建
  • 从 iPhone 上传图像/音频到服务器无法发送大图像

    我不知道这是我的iPhone代码还是服务器的问题 我正在使用 NSURLConnection 将图像 音频从 iPhone 上传到服务器 如果图像和音频的大小小于 60KB 则可以正常上传 如果超过 60KB 我会从服务器收到 400 Ba
  • 使用隐式转换运算符的 Nullable 行为的理由是什么

    我在人与人之间的互动中遇到了一些有趣的行为Nullable和隐式转换 我发现为引用类型提供从值类型的隐式转换它允许Nullable当我期望出现编译错误时 类型将传递给需要引用类型的函数 下面的代码演示了这一点 static void Mai
  • 为什么有时Task明显慢于Thread?

    我正在使用 MVVM 模式制作 WPF 应用程序 我发现有时任务明显慢于线程 例如 在测试 ViewModel 中 public void DoSomething Stopwatch stopwatch Stopwatch StartNew
  • 如果有的话,什么是好的 .NET Windows 自动化库?

    我正在寻找一个可以在本机 NET 代码中使用的库 就像任何 NET 程序集一样 该库的目的必须是使 Windows 自动化 按下按钮 选择窗口 发送按键 记录和回放等 因此 该库应该在 NET 中本机使用 但自动化本身必须能够针对任何可以接
  • 如何从一堆图像生成视频?

    谁能告诉我从一堆图像 位图 生成视频的方法 可能是开放格式的avi文件或开源库 我使用了 Splicer 但它在生产使用中存在一些错误 字节数图像转视频 SDK http bytescout com products developer i
  • Android 线程和处理程序不工作

    我最近重构了一个旧项目 发现无论我做什么 特定部分都不再需要正常运行 本质上 我有一个带有 TextView 的 Activity 该视图按时间间隔从同一类中调用的线程更新 暂停是通过 Thread sleep 完成的 并且使用 Handl
  • C# 委托实例化与仅传递方法引用 [重复]

    这个问题在这里已经有答案了 我有一个简单的问题 与仅传递函数引用相比 实例化 C 委托有什么优势 我的意思是 Why do Thread t new Thread new ThreadStart SomeObject SomeMethod
  • 终止以 System.Diagnostic.Process.Start("FileName") 启动的进程

    我正在尝试创建一个将在特定时间执行操作的应用程序 很像 Windows 任务计划程序 我当前正在使用 Process Start 来启动任务所需的文件 或 exe 我通过调用文件 mp3 启动一个进程 该进程启动 WMP 因为它是默认应用程
  • 我可以举一个使用 runOnUiThread 显示 toast 的示例吗?

    我搜索了很多地方 但找不到 runOnUiThread 实现的完整工作示例 我尝试了很多 但出现了很多错误 我只想显示线程中的吐司 这是最终的完整代码 感谢所有回复的人 import android app Activity import
  • 在 WiX 中轻量运行时,DefaultDir 无效

    我只是想做一个安装程序 将一些文件移动到程序文件中 设置开始菜单链接 并出现在要卸载的添加 删除程序中 目前我很乐意点击开始菜单链接 因为这看起来相对简单 需要注意的是 我特别希望可以通过脚本构建它without任何类型的全局安装 这意味着
  • 从资源文件获取 DisplayName [重复]

    这个问题在这里已经有答案了 我在 App GlobalResources 文件夹中有特定于文化的资源文件 现在我需要从此资源文件中读取 DisplayName 属性的值 我在用 Display Name MerchantName Resou
  • 将整个单词与特殊字符匹配的正则表达式不起作用? [复制]

    这个问题在这里已经有答案了 我正在经历这个问题C Regex Match 整个单词 https stackoverflow com q 1209049 443568 它说要匹配整个单词使用 b模式 b 这对于匹配没有任何特殊字符的整个单词效

随机推荐

  • 缺少系统.Windows

    我有一个相当大的解决方案 里面有一些 Silverlight 和 WPF 项目 以及一些类库和其他东西 其中一个项目是一个类库 它引用了 SilverLight 应用程序 该应用程序引用了System Windows 但在运行时 我收到错误
  • PHP:如何跳过 foreach 循环中的最后一个元素[重复]

    这个问题在这里已经有答案了 我有一个对象数组 php ini 中的任何数组 如何跳过 foreach 迭代中的最后一个元素 使用一个变量来跟踪到目前为止已经迭代了多少个元素 并在到达末尾时切断循环 count count array for
  • Yelp API Android 集成 [重复]

    这个问题在这里已经有答案了 我正在尝试与 Android 版 Yelp API 集成 每当我尝试连接时 我都会遇到致命错误 10 14 18 32 29 207 E AndroidRuntime 7354 FATAL EXCEPTION m
  • 如何使用时间滑块绘制地图并使用Python中的plotly缩放城市

    我想创建一个交互式地图 显示城市不同地点的变量 自行车数量 的演变 为什么不通过使用情节 我想做这样的事情 https amaral northwestern edu blog step step how plot map slider r
  • 已发布的扩展程序无法与 onInstalled 内的 chrome API 侦听器配合使用

    我刚刚测试了我的 Chrome 插件https chrome google com webstore detail soft screen oecaicengbgemdbdklmajocogdjjgnda https chrome goog
  • proxy_pass 覆盖由 rewrite 指令更改的 URL

    来自 nginx文档 http nginx org en docs http ngx http proxy module html proxy pass如下引用 我明白proxy pass指令不会更改 URI 只会将重写的 URI 传递到服
  • 使用不连续输入/强制数据求解 ODE

    我正在尝试用 Python 求解耦合一阶 ODE 系统 我对此很陌生 但是僵尸启示录示例 http wiki scipy org Cookbook Zombie Apocalypse ODEINT到目前为止 SciPy org 提供了很大的
  • Discord.py 狙击命令

    我试图发出一个命令 让机器人 狙击 最后删除的消息 这是我当前的代码 snipe message content None snipe message author None client event async def on messag
  • 如何在 Django 管理中使用 HTML5 颜色选择器

    我正在尝试在 Django 的管理页面中实现 HTML5 颜色选择器 这是我的模型 model py class Category models Model color models CharField max length 7 表格如下
  • 使用 sys/mount.h 挂载 ISO

    我正在尝试在 Linux 中的 C 程序中挂载 ISO 文件 我知道 linux 命令可以实现此目的 即 mount o Loop Test iso mnt myISO 但是 mount 2 手册页声明了以下安装原型 int mount c
  • 字符串到 java.sql.Date

    我意识到这个问题已经被问了很多 我确实看过 我花了几个小时环顾四周并试图找出答案 我应该制作一个程序 在数据库中存储相当于约会列表的内容 其中包含描述 日期 开始时间和结束时间 它必须接受用户的输入来添加或取消约会 据我所知 这意味着我需要
  • 如何在查询中比较模型的两个字段?

    我正在编写一个管理命令 它将用建议价格过滤产品的原始价格 我有一个产品模型 如下所示 class Suggestion models Model price models IntegerField class Product models
  • Python 子进程 wait() 在 Mavericks 和 Yosemite 上的行为不同

    我最近升级到优胜美地 一些用于在 Mavericks 上运行的 Python 脚本被挂起 我的版本是2 7 8 我创建了一个测试用例 import subprocess cat subprocess Popen top l 1 stdout
  • 'And' 与 'AndAlso' 与 vb.net 中的 linq 有关系吗?

    在 vb net 的 linq 查询中使用 And 或 AndAlso 有什么关系吗 我知道在正常操作中 AndAlso 是短路的 因此通常会更快 但我不知道这是否会延续到 linq 查询中 linq 查询是针对数据库还是针对内存集合 这很
  • 固定大小的并发Map

    我需要一张满足以下要求的地图 应该是高并发的 这put get and remove 方法可以由多个线程同时调用 它应该是固定大小的 如果尺寸HashMap达到最大值 例如 10000 则不允许向映射添加新条目 它不能是 LRU 缓存 其中
  • JSON 格式的 Jquery.ajax API 请求在 Chrome 中导致“Uncaught SyntaxError: Unexpected token :”

    我正在尝试查询http developer pintlabs com brewerydb api documentation http developer pintlabs com brewerydb api documentation使用
  • 如何正确刷新curses窗口?

    while 1 window addstr 0 0 abcd window refresh window尺寸为全终端尺寸 大到足以容纳abcd If abcd 被修改为更短的字符串 例如 xyz 然后在终端上我会看到 xyzd 我到底做错了
  • PHP 的 finfo::buffer 如何被欺骗?

    处理上传的文件时 FILES foo type 一点也不可靠 我发现如果您更改 OS X 上的扩展名 类型 会自动更改 相反 请考虑 fileInfo new finfo FILEINFO MIME mimeType fileInfo gt
  • NuGet (NuPack) 智能感知(Visual Studio 包管理器控制台)

    我的 NuGet 智能感知未显示 或者也许有某种捷径 我不认为智能感知是您所期望的 就像在带有可用选项列表的下拉列表中一样 From this page http nuget codeplex com wikipage title Gett
  • 适用于 .NET 的无锁和线程安全 IList

    是否有实现 IList 的无锁且线程安全的数据结构 当然 无锁是指不使用 NET 中的锁定原语而是使用互锁操作 原子操作来实现线程安全的实现 显然在并发数据结构下没有一个 有人见过漂浮在空中的吗 我见过一个java实现氨基 CBBs htt