concurrent-hashtable: Thread-safe hash tables for multi-cores!

[ bsd3, concurrency, library ] [ Propose Tags ]

Please see the README on GitHub at https://github.com/pwrobinson/concurrent-hashtable#readme. Benchmarks can be found at https://lowerbound.io/blog/2019-10-24_concurrent_hash_table_performance.html


[Skip to Readme]
Versions [faq] 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8
Change log ChangeLog.md
Dependencies async (>=2.2.2 && <3), atomic-primops (>=0.8.3 && <2), base (>=4.7 && <5), hashable (>=1.2.7.0 && <2), random (>=1.1 && <2), stm (>=2.4.5.1 && <3), vector (>=0.12.0.3 && <1) [details]
License BSD-3-Clause
Copyright 2019 Peter Robinson
Author Peter Robinson
Maintainer pwr@lowerbound.io
Category Concurrency
Home page https://github.com/pwrobinson/concurrent-hashtable#readme
Bug tracker https://github.com/pwrobinson/concurrent-hashtable/issues
Source repo head: git clone https://github.com/pwrobinson/concurrent-hashtable
Uploaded by PeterRobinson at Mon Oct 28 12:03:58 UTC 2019
Distributions NixOS:0.1.8
Downloads 286 total (286 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-10-28 [all 1 reports]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for concurrent-hashtable-0.1.8

[back to package description]

A thread-safe hash table for multi-cores

You can find benchmarks and more information about the internals of this package here.

Installation

stack install

Usage Example

> ht <- newWithDefaults 4     -- creates hash table of initial size 4
> insert ht 1 "hello"         -- adds key-value pair (1,"hello")
> insert ht 2 "world"         -- adds key-value pair (2,"world")
> atomically $ readAssocs ht  -- convert to a key-value list
 [(1,"hello"),(2,"world")]
> readSizeIO ht               -- returns 4
> insert ht 3 "!"             -- adds key-value pair (3,"!") and triggers a resize as the load fraction is ≥ 0.75
> readSizeIO ht               -- returns 8
> atomically $ readAssocs ht  -- convert to a key-value list
 [(1,"hello"),(3,"!"),(2,"world")]