From: Jeff Preshing Date: Thu, 1 Dec 2016 16:34:18 +0000 (-0500) Subject: Update README to explicitly state that functions must be invertible (fix #16) X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=36b33f71c9b2568f3bfe1127741a1187b0ab342a;p=junction.git Update README to explicitly state that functions must be invertible (fix #16) --- diff --git a/README.md b/README.md index d603544..47295f3 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ The `JUNCTION_USERCONFIG` variable works in a similar way. As an example, take a ## Rules and Behavior -A Junction map is a lot like a big array of `std::atomic<>` variables, where the key is an index into the array. More precisely: +Currently, Junction maps only work with integer or pointer-sized keys. The hash function must be invertible, so that every key has a unique hash. Otherwise, A Junction map is a lot like a big array of `std::atomic<>` variables, where the key is an index into the array. More precisely: * All of a Junction map's member functions, together with its `Mutator` member functions, are atomic with respect to each other, so you can safely call them from any thread without mutual exclusion. * If an `assign` [happens before](http://preshing.com/20130702/the-happens-before-relation/) a `get` with the same key, the `get` will return the value it inserted, except if another operation changes the value in between. Any [synchronizing operation](http://preshing.com/20130823/the-synchronizes-with-relation/) will establish this relationship.