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