Queue-free/gen_server-free/process-free locking mechanism built for high concurrency.
In certain scenarios you may require to have locking on resources in hot code paths, most locking solutions require some singular process that, under heavy loads, this may cause bottlenecking on that single process. Locksmith attempts to avoid this by avoiding all forms of processes to avoid all kinds of bottlenecks in your hot code paths.
This is achieved by use of ets:update_counter/4
operations, (ab)using it's atomicity and isolation.
The package can be installed by adding locksmith
to your list of dependencies in mix.exs
:
def deps do
[
{:locksmith, "~> 1.0.0"}
]
end