文件名称:ConcurrentList:Daniel Tao 的 ConcurreltList 的一组改进
文件大小:1.63MB
文件格式:ZIP
更新时间:2024-06-27 09:18:45
C#
并发列表 此数据结构旨在提供 ConcurrentList 的有意部分但重要的实现。 什么是并发列表 很简单,一个无锁的仅追加向量。 即只能在其末尾增长的向量(无删除/插入操作) 描述部分是指不使用锁定原语(例如互斥锁等)的实现。 为什么要使用这种数据结构? 此数据结构的主要用例是单个或多个(但通常很少)写入者或线程执行对向量的追加操作,同时具有多个(*)集合或读取者。 读者在访问向量/列表时保持不受阻碍,而与使用锁定原语(互斥体等)相比,作者不会支付额外的惩罚。 有关此数据结构的更多信息,您可以阅读的 这是谁做的 那这是什么? 对他的实施的一系列改进。 主要是: 更快的 Log2 函数 小的性能改进和优化 更多测试覆盖率,Pex 提供 更好的初始数组大小(即从 8 个元素开始,然后是 16 个等等)
【文件预览】:
ConcurrentList-master
----ConcurrentList.PerformanceTests()
--------Program.cs(2KB)
--------ConcurrentList.PerformanceTests.csproj(3KB)
--------Properties()
----.gitignore(259B)
----LICENSE(1KB)
----ConcurrentList()
--------ConcurrentList.cs(8KB)
--------LOG2Hack.cs(610B)
--------ConcurrentList.csproj(3KB)
--------Properties()
----ConcurrentList.Threading()
--------ConcurrentList.Threading.csproj(2KB)
--------TaskJoiner.cs(652B)
--------SaneParallel.cs(2KB)
--------ThreadJoiner.cs(651B)
--------CrazyParallel.cs(2KB)
--------Properties()
----README.markdown(1KB)
----lib()
--------Pex()
--------NUnit()
----ConcurrentList.UnitTests()
--------ConcurrentListTests.CopyToShouldThrowOnInvalidIndex.g.cs(696B)
--------ConcurrentListTests.IsReadOnlyReturnsFalse.g.cs(687B)
--------ConcurrentListHandWrittenTests.cs(5KB)
--------ConcurrentListTests.Contains.g.cs(673B)
--------ConcurrentListTests.GetItem.g.cs(672B)
--------SaneParallelTests.cs(3KB)
--------ConcurrentListPexTests.Contains.g.cs(1KB)
--------ConcurrentListTests.CountCrazy.g.cs(694B)
--------ConcurrentList.UnitTests.csproj.user(326B)
--------CrazyParallelTests.Count.g.cs(884B)
--------ConcurrentListTests.InsertIsNotSupported.g.cs(685B)
--------ConcurrentListPexTests.IndexOf.g.cs(1KB)
--------CrazyParallelTests.Clear.g.cs(780B)
--------ConcurrentListTests.Add.g.cs(674B)
--------ConcurrentListTests.Count.g.cs(669B)
--------SaneParallelTests.Count.g.cs(880B)
--------CrazyParallelTests.cs(2KB)
--------ConcurrentListTests.RemoveIsNotSupported.g.cs(685B)
--------CrazyParallelTests.Add.g.cs(774B)
--------SeriesLength.cs(465B)
--------ConcurrentListPexTests.ItemSet.g.cs(1KB)
--------ConcurrentListPexTests.Clear.g.cs(1KB)
--------ConcurrentListTests.AddParallelCrazy.g.cs(700B)
--------ConcurrentListTests.ClearIsNotSupported.g.cs(684B)
--------ConcurrentListTests.ConstructorShouldNotThrowException.g.cs(699B)
--------Log2HackTest.cs(1KB)
--------ConcurrentListPexTests.cs(4KB)
--------SaneParallelTests.Clear.g.cs(777B)
--------ConcurrentListTests.RemoveAtIsNotSupported.g.cs(687B)
--------ConcurrentListPexTests.GetEnumerator.g.cs(1KB)
--------ConcurrentListTTest.Add.g.cs(696B)
--------SaneParallelTests.CountAlwaysPointsToAnExistingValue.g.cs(918B)
--------ConcurrentListPexTests.CountGet.g.cs(1KB)
--------ConcurrentListPexTests.Add.g.cs(1KB)
--------ConcurrentListTests.CountSane.g.cs(693B)
--------ConcurrentListTests.CopyTo.g.cs(671B)
--------ConcurrentListTests.IndexOf.g.cs(672B)
--------ConcurrentListTests.AddParallelSane.g.cs(699B)
--------ConcurrentListPexTests.Constructor.g.cs(1017B)
--------ConcurrentListPexTests.ItemGet.g.cs(1KB)
--------ConcurrentListPexTests.CopyTo.g.cs(2KB)
--------ConcurrentListTests.ItemShouldThrowOnInvalidIndex.g.cs(694B)
--------Properties()
--------ConcurrentList.UnitTests.csproj(9KB)
--------SaneParallelTests.Add.g.cs(975B)
--------ConcurrentListTests.SetItem.g.cs(672B)
----ConcurrentList.sln(5KB)