BucketMap¶
Usage
use BucketMap;
-
config const
BucketMapInitialBucketSize= 8¶ A map intended to be used for computing equivalence classes. We create a fixed number of buckets per locale and use modulus division to determine where the objects are sent to. The more buckets, the higher the potential for concurrency. Each bucket is a resizing vector with its own lock; this can be seen as a way to dynamically redistribute data based on the hash.
-
record
BucketMap¶ -
type
keyType¶
-
type
valueType¶
-
var
pid: int¶
-
proc
init(type keyType, type valueType, numBucketsPerLocale = 1024)¶
-
type
-
class
Bucket¶ -
type
keyType¶
-
type
valueType¶
-
var
lock: Lock¶
-
var
keySlots: owned Vector(keyType)¶
-
var
valueSlots: owned Vector(valueType)¶
-
proc
init(type keyType, type valueType)¶
-
type
-
class
Buckets¶ -
type
keyType¶
-
type
valueType¶
-
const
numBucketsPerLocale: int¶
-
var
bucketsDom= {0..#numLocales*numBucketsPerLocale} dmapped Cyclic(startIdx = 0)¶
-
var
buckets: [bucketsDom] unmanaged keyTypeBucketvalueType¶
-
proc
init(type keyType, type valueType, numBucketsPerLocale)¶
-
type
-
class
BucketMapImpl¶ -
type
keyType¶
-
type
valueType¶
-
var
pid: int¶
-
var
buckets: unmanaged keyTypeBucketsvalueType¶
-
var
bucketsRef= _newArray(buckets.buckets._value)¶
-
proc
init(type keyType, type valueType, numBucketsPerLocale: int)¶
-
proc
init(other: unmanaged ?keyTypeBucket?valueType, privatizedData)
-
proc
dsiPrivatize(privatizedData)¶
-
proc
dsiGetPrivatizeData()¶
-
proc
getPrivatizedInstance()¶
-
type