Skip to content

Commit 895da13

Browse files
Use .NET 9's System.Threading.Lock instead of object for locking (#27)
1 parent a9a64c7 commit 895da13

File tree

12 files changed

+12
-12
lines changed

12 files changed

+12
-12
lines changed

SharpCoreDB.Benchmarks/FairComparisonBenchmark.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ private void RunSQLite(int threads)
187187
{
188188
var perThread = RECORDS / threads;
189189
var tasks = new Task[threads];
190-
var lockObj = new object();
190+
Lock lockObj = new();
191191

192192
for (int t = 0; t < threads; t++)
193193
{

SharpCoreDB.Extensions/DapperPerformanceExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace SharpCoreDB.Extensions;
1111
public static class DapperPerformanceExtensions
1212
{
1313
private static readonly Dictionary<string, PerformanceMetrics> _metricsCache = new();
14-
private static readonly object _metricsLock = new();
14+
private static readonly Lock _metricsLock = new();
1515

1616
/// <summary>
1717
/// Executes a query with performance tracking.

SharpCoreDB/Database.Core.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public partial class Database : IDatabase, IDisposable
3636
private readonly DatabaseConfig? config;
3737
private readonly QueryCache? queryCache;
3838
private readonly PageCache? pageCache;
39-
private readonly object _walLock = new(); // ✅ C# 14: target-typed new
39+
private readonly Lock _walLock = new(); // ✅ C# 14: target-typed new
4040
private readonly ConcurrentDictionary<string, CachedQueryPlan> _preparedPlans = new();
4141

4242
private readonly GroupCommitWAL? groupCommitWal;

SharpCoreDB/MVCC/MvccManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public sealed class MvccManager<TKey, TData> : IDisposable
2323
private readonly ConcurrentDictionary<long, MvccTransaction> _activeTransactions = new();
2424
private long _currentVersion;
2525
private long _nextTransactionId;
26-
private readonly object _versionLock = new();
26+
private readonly Lock _versionLock = new();
2727

2828
/// <summary>
2929
/// Initializes a new instance of the <see cref="MvccManager{TKey, TData}"/> class.

SharpCoreDB/MVCC/VersionedRow.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public VersionedRow<TData> Update(TData newData, long newVersion) =>
6969
public sealed class VersionChain<TData> where TData : class
7070
{
7171
private readonly List<VersionedRow<TData>> _versions = [];
72-
private readonly object _lock = new();
72+
private readonly Lock _lock = new();
7373

7474
/// <summary>
7575
/// Gets the number of versions in this chain.

SharpCoreDB/Optimizations/InsertOptimizations.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public sealed class DelayedColumnTranspose
2222
{
2323
private readonly List<Dictionary<string, object>> _rowBuffer = [];
2424
private bool _isTransposed;
25-
private readonly object _transposeLock = new();
25+
private readonly Lock _transposeLock = new();
2626

2727
/// <summary>
2828
/// Adds a row WITHOUT transposing (O(1) operation).

SharpCoreDB/Services/AutoMaintenanceService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class AutoMaintenanceService : IDisposable
1616
private readonly System.Timers.Timer timer;
1717
private int writeCount = 0;
1818
private readonly int writeThreshold;
19-
private readonly object @lock = new();
19+
private readonly Lock @lock = new();
2020
private bool disposed = false;
2121

2222
/// <summary>

SharpCoreDB/Services/Storage.Append.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public partial class Storage
2121
// Track buffered appends during transaction
2222
private readonly Dictionary<string, List<(byte[] data, long position)>> bufferedAppends = new();
2323
private readonly Dictionary<string, long> cachedFileLengths = new(); // ✅ NEW: Cache file lengths
24-
private readonly object appendLock = new object();
24+
private readonly Lock appendLock = new();
2525

2626
/// <inheritdoc />
2727
[MethodImpl(MethodImplOptions.AggressiveOptimization)]

SharpCoreDB/Services/Storage.Core.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public partial class Storage : IStorage
2727

2828
// Transaction support
2929
private readonly TransactionBuffer transactionBuffer;
30-
private readonly object transactionLock = new object();
30+
private readonly Lock transactionLock = new();
3131

3232
/// <summary>
3333
/// Initializes a new instance of the <see cref="Storage"/> class.

SharpCoreDB/SharpCoreDB/Core/File/BufferedWriteManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class BufferedWriteManager : IDisposable
1919
{
2020
// Per-file buffered writes
2121
private readonly Dictionary<string, FileWriteBuffer> fileBuffers = [];
22-
private readonly object bufferLock = new object();
22+
private readonly Lock bufferLock = new();
2323

2424
private bool disposed = false;
2525

0 commit comments

Comments
 (0)