https://github.com/snower/slock4net
https://github.com/snower/slock4net
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/snower/slock4net
- Owner: snower
- License: mit
- Created: 2022-01-08T05:40:27.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-05-29T06:34:20.000Z (about 2 years ago)
- Last Synced: 2024-12-24T22:33:18.256Z (over 1 year ago)
- Language: C#
- Size: 148 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# slock4net
[](https://github.com/snower/slock4net/actions/workflows/build-test.yml)
[](https://github.com/snower/slock4net/stargazers)
High-performance distributed sync service and atomic DB. Provides good multi-core support through lock queues, high-performance asynchronous binary network protocols. Can be used for spikes, synchronization, event notification, concurrency control. https://github.com/snower/slock
# Install
```bash
NuGet\Install-Package slock4net -Version 1.0.3
```
# Client Lock
```C#
using slock4net.Exceptions;
using slock4net;
SlockClient client = new SlockClient("localhost", 5658);
try
{
client.Open();
Lock lck = client.NewLock("test", 5, 5);
lck.Acquire();
lck.Release();
}
catch (IOException e) {
Console.WriteLine(e.ToString());
}
catch (SlockException e) {
Console.WriteLine(e.ToString());
} finally
{
client.Close();
}
Console.WriteLine("Success");
```
# Replset Client Lock
```C#
using slock4net.Exceptions;
using slock4net;
SlockReplsetClient replsetClient = new SlockReplsetClient(new String[] { "localhost:5658" });
try
{
replsetClient.Open();
Lock lck = replsetClient.NewLock("test", 5, 5);
lck.Acquire();
lck.Release();
}
catch (IOException e) {
Console.WriteLine(e.ToString());
}
catch (SlockException e) {
Console.WriteLine(e.ToString());
} finally
{
replsetClient.Close();
}
Console.WriteLine("Success");
```
# Async Client Lock
```C#
using slock4net.Exceptions;
using slock4net;
async Task TestLock()
{
SlockReplsetClient replsetClient = new SlockReplsetClient(new String[] { "localhost:5658" });
try
{
await replsetClient.OpenAsync();
Lock lck = replsetClient.NewLock("test", 5, 5);
await lck.AcquireAsync();
await lck.ReleaseAsync();
}
catch (IOException e)
{
Console.WriteLine(e.ToString());
}
catch (SlockException e)
{
Console.WriteLine(e.ToString());
}
finally
{
await replsetClient.CloseAsync();
}
}
TestLock().Wait();
Console.WriteLine("Success");
```
# Event
```C#
using slock4net.Exceptions;
using slock4net;
SlockClient client = new SlockClient("localhost", 5658);
try
{
client.Open();
Event event1 = client.NewEvent("test", 5, 5, true);
event1.Clear();
Event event2 = client.NewEvent("test", 5, 5, true);
event2.Set("{\"value\": 10}");
event1.Wait(10);
Console.WriteLine(event1.CurrentLockDataAsString);
}
catch (IOException e) {
Console.WriteLine(e.ToString());
}
catch (SlockException e) {
Console.WriteLine(e.ToString());
} finally
{
client.Close();
}
Console.WriteLine("Success");
```