You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by sy...@apache.org on 2016/10/02 10:17:17 UTC

[46/49] lucenenet git commit: Ported part of AtomicReferenceArray from Java for testing.

Ported part of AtomicReferenceArray from Java for testing.


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/44a5cb54
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/44a5cb54
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/44a5cb54

Branch: refs/heads/master
Commit: 44a5cb543394cc9bd2afa42f42d8666c18e66c48
Parents: 979f4e9
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Sun Sep 18 05:22:51 2016 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Sun Sep 18 05:22:51 2016 +0700

----------------------------------------------------------------------
 src/Lucene.Net.Core/Lucene.Net.csproj           |  1 +
 .../Support/AtomicReferenceArray.cs             | 35 ++++++++++++++++++++
 2 files changed, 36 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/44a5cb54/src/Lucene.Net.Core/Lucene.Net.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Lucene.Net.csproj b/src/Lucene.Net.Core/Lucene.Net.csproj
index 4740604..e06e704 100644
--- a/src/Lucene.Net.Core/Lucene.Net.csproj
+++ b/src/Lucene.Net.Core/Lucene.Net.csproj
@@ -608,6 +608,7 @@
     <Compile Include="Support\AtomicInteger.cs" />
     <Compile Include="Support\AtomicLong.cs" />
     <Compile Include="Support\AtomicObject.cs" />
+    <Compile Include="Support\AtomicReferenceArray.cs" />
     <Compile Include="Support\Buffer.cs" />
     <Compile Include="Support\AttributeImplItem.cs" />
     <Compile Include="Support\BitSetSupport.cs" />

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/44a5cb54/src/Lucene.Net.Core/Support/AtomicReferenceArray.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Support/AtomicReferenceArray.cs b/src/Lucene.Net.Core/Support/AtomicReferenceArray.cs
new file mode 100644
index 0000000..f6f7316
--- /dev/null
+++ b/src/Lucene.Net.Core/Support/AtomicReferenceArray.cs
@@ -0,0 +1,35 @@
+\ufeffusing System.Threading;
+
+namespace Lucene.Net.Support
+{
+    /// <summary>
+    /// Mimics Java's AtomicReferenceArray class (partial implementation)
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    public class AtomicReferenceArray<T> where T : class
+    {
+        private T[] _array;
+
+        public AtomicReferenceArray(int length)
+        {
+            _array = new T[length];
+        }
+
+        public int Length
+        {
+            get { return _array.Length; }
+        }
+
+        public T this[int index]
+        {
+            get
+            {
+                return Volatile.Read(ref _array[index]);
+            }
+            set
+            {
+                Volatile.Write(ref _array[index], value);
+            }
+        }
+    }
+}