Lock-free multi-thread solutions for multi-core and more - Parallel Scalable Solutions Main menu for Parallel Scalable Solutions
TransparentArrow hider
Blank background bar
The digital road leads to massively multi-core computers needing non-blocking programming

 
PRODUCTS
-  SOLUTIONS
NOBLE
   -  WHY?
   -  CONTENTS
   -  SYSTEMS
   -  PERFORMANCE


 

 

 

 

 

 

 

 

 



Acrobat Reader Portable Document Format (PDF)

NOBLE Professional Edition: Applications Programmers Interface (API)

DOWNLOAD & READ Arrow right
 



Products - NOBLE – Contents
 
NOBLE Professional Edition contains a large number of components. Of each component there are a number of different versions (i.e., implementations), that each are based on different technologies and approaches. The technologies that are used are:

  • Lock-free synchronization. This technology is non-blocking and means that no program thread can block any other. Moreover, is guaranteed that always at least one program thread is making progress when several program threads are working on the same data.  The technology has a relatively low starting cost and allows high scalability.
  • Wait-free synchronization. This technology is non-blocking and means that no program thread can block any other. Moreover, is guaranteed that all program threads that have started an operation always will finish in a finite time period.  The technology has a high starting cost and allows high scalability with mostly an increased cost in respect of memory space.
  • Lock-based synchronization. This technology means that program threads can block others. The technology has a low starting cost for a low number of involved program threads, but a limited scalability with increasing number of program threads.

Parallel versions of common abstract data types

Lock-Free Skip-list for implementing the dictionary abstract data type for multi-thread programmingThe components are adopted for practical usage and have a standardized interface in phase with common and well established abstract data types and data structures. As different applications and environments have different requirements, several implementations of each component (sharing the same external semantics) are available. The various implementations are named according to their special properties, e.g. lock-free, wait-free, real-time, logarithmic time complexity, dynamic structure, memory consumption, etc. The following abstract data types are included in NOBLE Professional Edition:

Abstract Data Type Implementations Operations
Stack

LF_B
LF_U
LB

Push
Pop
Queue

WF_SS
LF_DB
LF_DU
LF_SB
LB

Enqueue
Dequeue
Deque (Double-Ended Queue)

LF_HB
LF_HU
LF_LB
LB

PushLeft
PushRight
PopLeft
PopRight
Priority Queue

LF_EB
LF_EU
LB_SD
LB_DD
LB_E

Insert
FindMin
DeleteMin
Dictionary (Map)

LF_EB
LF_EU
LF_LB
LB_E

Insert
Update
Find
Delete
List

LF_SU
LF_DB
LF_DU
LB_S
LB_D

InsertAfter
InsertBefore
Delete
Next
Previous
Read
First
Last
Snapshot

WF_SS
WF_SM
WFR_SM
LB

Update
Scan

Programming Example

C++ Syntax Description

int values[2]={1,2};
NBL::PQueue<int,int> *pqueue;

Globals

pqueue = NBL::PQueue<int,int>::CreateLF_EB();
...spawn and run threads...

delete
pqueue;

Main procedure
pqueue->Insert(values+0,1); Thread x
pqueue->Insert(values+1,2); Thread y

int *value = pqueue->DeleteMin();
if(value!=NULL) {
   ...
}

Thread z

Moreover the library contains various wait-fee and lock-free implementations of atomic operations on a single or a collection of memory words, i.e. transactions. The supported operations of the atomic Word component are as follows:

Component Name Implementations Operations
Word

WF_B
WF_CASN
LF_LL

Read
Write
Add
Swap
Op
CAS
CASN
LL
VL
SC

Sophisticated memory management and configurability

In addition, a number of lock-free memory handlers are included that can be used in combination with the abstract data types for handling user-defined objects. This component offers an efficient interface for memory allocation and memory reclamation using non-blocking technology. The implementations offer a variety of properties depending on the need to allocate different block sizes or the strength of guaranteeing the safety of accessing global references concurrently. The supported operations of the Memory component are as follows:

Component Name Implementations Operations
Memory

LF SLB
LF SUU
LF MLB
LF WLB
LF CSLB
LF CSUU
LF CMLB
LF CWLB
LF HSLB
LF HSUU
LF HMLB
LF HWLB
WF SUU

AllocBlock
AllocClass
AllocSize
DeleteBlock
DeRefLink
CopyRef
ReleaseRef
StoreRef
CASRef

All components have an object-oriented design, and can if so wishes be adjusted via a set of parameters in order to fulfill special and individual needs.

As has been presented, NOBLE Professional Edition contains a rich set of components with a large number of implementations using non-blocking technology which widely surpasses (c.f. the Intel Threading Building Blocks which contains a fraction of the non-blocking capability compared to NOBLE) what is offered in other available packages.

For more information, please see the description of the application programmers interface (API) which can be downloaded from our technical documents pages.

NOBLE Professional Edition is in first hand developed for the C/C++ program languages in order to achieve highest performance, but can easily be used also from other program languages. An even more detailed description of the contents in NOBLE Professional Edition can be obtained by contacting us through the form at the contact page.

Note that we can customize individual components to meet special needs that are not fulfilled by our packaged solutions. Please contact us with your requests and needs, and we will give you more details about possible deal offers and licensing terms.

Arrow left PREVIOUS

NEXT Arrow right

Click here to view the swedish language version of the siteCreated by Kobolt.se, www.kobolt.se. ©2008 Parallel Scalable Solutions AB.
To home page