Aardvark.Base


ConcurrentSymbolSet

A ConcurrentSymbolSet is an alternate implementation of a HashSet. It is implemented as a hashtable with external linking, that uses primes as the table size in order to reduce the danger of funneling.

Constructors

ConstructorDescription
new(dict)
Signature: dict:SymbolSet -> unit

A ConcurrentSymbolSet can only be concstructed by wrapping its non-concurrent counterpart.

Instance members

Instance memberDescription
Add(key)
Signature: key:Symbol -> bool

Add the item with the supplied key to the ConcurrentSymbolSet.

Add(key)
Signature: key:string -> unit

Adds the supplied item to the ConcurrentSymbolSet. Note that this incurs the overhead of converting the string key to a symbol.

AddObject(objkey)
Signature: objkey:obj -> bool

Add the item with supplied key both supplied as generic objects, to the ConcurrentSymbolSet. Note that the supplied key and value are cast to the concrete type of the keys and values used in the ConcurrentSymbolSet and this will fail if they are of different types.

AddRange(keys)
Signature: keys:IEnumerable<Symbol> -> unit

Add the supplied keys to the ConcurrentSymbolSet.

Clear()
Signature: unit -> unit

Remove all items. Capacity remains unchanged.

Contains(key)
Signature: key:Symbol -> bool

Returns true if the ConcurrentSymbolSet contains the item with the supplied key.

CopyTo(array, index)
Signature: (array:Symbol [] * index:int) -> unit

Copies all keys in the dictionary to the supplied array starting at the supplied index. This may throw a ConcurrentDataModifiedException if data is modified by another task during the operation.

Count
Signature: int

Returns the number of items currently contained in the ConcurrentSymbolSet.

LongCount
Signature: int64

Returns the number of items currently contained in the ConcurrentSymbolSet as long.

NonConcurrent
Signature: SymbolSet

Return the non-concurrent contained ConcurrentSymbolSet.

Remove(key)
Signature: key:Symbol -> bool

Remove the item with the supplied key from the ConcurrentSymbolSet. Returns true if the value was removed.

ToArray()
Signature: unit -> Symbol []

Returns all keys in the dictionary as an array. This may throw a ConcurrentDataModifiedException if data is modified by another task during the operation.

TryAdd(key)
Signature: key:Symbol -> bool

Add the item with the supplied key to the ConcurrentSymbolSet.

TryRemove(key)
Signature: key:Symbol -> bool

Try to reomve the item with the supplied key. If multipe entries have the same key, the one that was inserted last is removed. Returns true if the item was found.

Fork me on GitHub