No description
Find a file
2023-08-13 13:22:10 +03:00
docs css 2021-04-14 13:18:23 +03:00
tests update version etc. 2023-08-13 12:52:39 +03:00
.gitignore new deterministic tests 2020-04-23 16:20:44 +03:00
LICENSE Initial commit 2020-03-28 09:14:59 +02:00
README.md update version etc. 2023-08-13 12:52:39 +03:00
stashtable.nim update version etc. 2023-08-13 12:52:39 +03:00
stashtable.nimble nimble 2023-08-13 13:13:05 +03:00

StashTable

Concurrent hash table for Nim. Excellent way to safely share arbitrary data between multiple threads.

Example

# nim r example.nim
import os, random, stashtable

type SharedData = StashTable[string, seq[string], 100]

proc threading(d: tuple[t: int, shareddata: SharedData]) =
  for i in 0 .. 10:
    sleep(rand(10))
    d.shareddata.withValue("somekey"): value[].add($d.t & "->" & $i)

let shareddata = newStashTable[string, seq[string], 100]()
shareddata.insert("somekey", @[])

var threads: array[2, Thread[tuple[t: int, shareddata: SharedData]]]
for i in 0 .. 1: createThread(threads[i], threading, (i, shareddata))
joinThreads(threads)
echo shareddata

Installation

latest stable release (1.2.2): atlas use StashTable

Documentation

https://olliNiinivaara.github.io/StashTable/

Tests and benchmarking

https://github.com/olliNiinivaara/StashTable/blob/master/tests/testing.md