Download Shareware and Freeware Software for Windows, Linux, Macintosh, PDA

line Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Serving Software Downloads in 956 Categories, Downloaded 50.011.839 Times

libcontain 0.2 Alpha1

  Date Added: September 03, 2010  |  Visits: 1.053

libcontain 0.2

Report Broken Link
Printer Friendly Version


Product Homepage
Download (93 downloads)



libcontain library provides a large and growing number of fast and thread-safe containter objects written in C and C++. The libcontain library now provides the following container types: - a series of hash tables libcontain includes the hash table implementation from GNU glib and a hash implementation in C++ it inherited from the libhash library it originates from. This latter has been rendered thread-safe in the 0.2 release and implements a linear hashing algorithm. A single hash table implementation that will replace them both is on the drawing boards and is intended to be thread-safe and non-blocking. - an array (vector) implementation libcontain currently includes a non-blocking array implementation. However, this implementation presents a race-condition in concurrent calls to any of its writing functions if the array is in the process of being resized. There is currently no known non-blocking way to solve this race condition. Help is welcome in this area. - a binomial tree The binomial tree provided by libcontain does not provide any algorithmic logic in its implementation: it is a generic container that can be used as the basis for other container implementations, such as a heap or a map (as a matter of fact, the heap and the map are both based on this binomial tree) - a heap libcontain provides an automatically sorting heap implementation that (obviously) uses a heap sort to sort the elements it contains. Unfortunately, the heap implementation is not non-blocking (although bases on a non-blocking binomial tree implementation). It contains four levels of locks: a reader count and a write lock at the level of the nodes, and a reader count and a write lock at the level of the container. The locks are posed on the container for as short a time as possible so at to prevent the progress of the algorithm to block too long. If anyone knows of a non-blocking heap algorithm, input is more than welcome. - a list libcontain provides a non-blocking list implementation based on an algorithm by M.M. Micheal (also the inventor of Safe Memory Reclamation on which libmemory is based). a map The map implementation included in libcontain is based on the binomial tree implementation. Unlike some implementations based on binary trees, this implementation stores values in each node of the tree (not just the leaf nodes) and therefore allows a more memory-efficient way to store information than hashes and other map implementations. Also, the map implementation does not use a "less" function but uses a three-way comparison to compare keys (much like the helper function used by qsort). The implementation is almost (but not quite) non-blocking: for most intents and purposes, there are no real locks: read and write operations may be re-directed along a branch of the binomial tree if a node that they traverse is being deleted, but will not block for that. However, a remove operation will wait for another remove operation to finish if it traverses a node being removed. - a queue a non-blocking queue implementation is provided - a stack a non-blocking stack implementation is also provided In future versions, the hash implementation will be replaced by a non-blocking one and the remaining problems with the existing containers will (hopefully) be solved. Help is also needed to write the architecture-dependant code for non-IA32 platforms such as Sparc. Whats New in This Release: - The 0.2 release introduces number of important new features including a heap and a map, both based on a lock-free binomial tree. It also includes the required memory management to make the containters impervious to the ABA problem and thus truly thread-safe.. A generic dependency tracker implementation in C++, based on a generic Directed Acyclic Graph

Requirements: No special requirements
Platforms: Linux
Keyword: Based On Binomial Tree Heap Implementation In C Libcontain Libraries Non-blocking Programming Thread-safe Tree Written In
Users rating: 0/10

License: Freeware Size: 378.88 KB
USER REVIEWS
More Reviews or Write Review


LIBCONTAIN 0.2 RELATED
Libraries  -  Fast MD5 Implementation in Java 2.6.1
Fast MD5 Implementation in Java is a heavily optimized implementation of the MD5 hashing algorithm written in Java. Fast MD5 Implementation in Java includes an optional native method for even greater speed improvements. How Fast Is It? Short...
74.75 KB  
Utilities  -  DomSax 1.0.0
DomSax is an implementation of a XML-parser based on the standard Document Object Model principle (and suns implementation), combining it with the flexibility and possibility of low memory consumption of the SAX-parser (also suns implementation)....
18.43 KB  
Libraries  -  Libgtkol 1.4
Libgtkol is GTK C++ Object Layer based on the libgenerics abstract services and the Gtk API. The project offers the developers a complete intuitive object API without restricting access to the Gtk functionalities themselves.. Get libgenerics at...
378.88 KB  
Development Tools  -  Launch a program based on file extension 1.0
This script associates or launches an action to be performed by the os based on filename extension. For example, assoc.py -e test.c will launch emacs. The optional extra_args allows you to add additional settings to the command associated with the...
 
Modules  -  Multiple flat shipping rates based on Order Total 1.0
This small contribution is based on the "Percent Rate x total sale price" shipping contribution originally posted by WebyMaster and modified by many. All credit to all who came before!Basically it works like this:> The shipping cost will vary...
 
Modules  -  Shipping Method Based On Order Total 1.0
This contribution will allow you to choose the shipping method based on the total order, i.e. for orders under $200, ship with USPS, while for orders over $200, ship with UPS. It will also allow you to enable/disable shipping, depending on whether...
 
Development Tools  -  Herr Klaus 1.0
Simulink implementation of a human atrial action potential model based on the publication of:A Nygren, C. Fiset, L. Firek, J.W. Clark, D.S. Lindblad, R.B. Clark and W.R. Giles. Mathematical Model of an Adult Human Atrial Cell: The Role of K+...
10 KB  
Libraries  -  libGLI 0.4
libGLI is a multi-platform library for creating 3D user interfaces, based on OpenGL. With the help of this library, programmers can add in their own graphical application elements for the user interface and connect interface objects to their own...
61.44 KB  
Science  -  TreeQ 1.4.11
The TreeQ package is a set of C-language applications that implement aautomatic machine learning algorithm based on a tree-structured classifier. This approach is particularly effective for high-dimensional continuous data such as audio and video.
323.26 KB  
Modules  -  Sessions based on files instead of mysql 1.0
Sessions based on files system instead of mysql database.If you want to save the maximum of mysql ressource and gain time loading your pages, try this hack.It is simple to install and works fine.Just follow install.txt
 
NEW DOWNLOADS IN PROGRAMMING, LIBRARIES
Programming  -  Cedalion for Linux 0.2.6
Cedalion is a programming language that allows its users to add new abstractions and define (and use) internal DSLs. Its innovation is in the fact that it uses projectional editing to allow the new abstractions to have no syntactic limitations.
471.04 KB  
Programming  -  Math::GMPf 0.29
Math::GMPf - perl interface to the GMP library's floating point (mpf) functions.
30.72 KB  
Programming  -  Net::Wire10 1.08
Net::Wire10 is a Pure Perl connector that talks to Sphinx, MySQL and Drizzle servers. Net::Wire10 implements the low-level network protocol, alias the MySQL wire protocol version 10, necessary for talking to one of the aforementioned...
30.72 KB  
Programming  -  logilab-common 0.56.2
a bunch of modules providing low level functionnalities shared among some python projects devel Please note that some of the modules have some extra dependencies. For instance, logilab.common.db will require a db-api 2.0 compliant...
174.08 KB  
Programming  -  OpenSSL for linux 1.0.0a
The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a...
3.83 MB  
Libraries  -  wolfSSL 4.0.0
The wolfSSL embedded SSL/TLS library is a lightweight SSL library written in ANSI standard C and targeted for embedded and RTOS environments - primarily because of its small size, speed, and feature set. It is commonly used in standard operating...
3.88 MB  
Libraries  -  EuGTK 4.8.9
Makes it easy to develop good- looking, fast, cross-platform programs that run on Linux, OS X, and Windows. Euphoria is a very fast interpreted/compiled language with straight-forward syntax. EuGTK allows programming in a clean, object-oriented...
10.68 MB  
Libraries  -  Linux User Group Library Manager 1.0
The LUG Library Manager is a project to help Linux User Groups start their own library. A LUG library is helpful to the community at large because it increases access to information, and gives everyone the opportunity to become more knowledgeable.
5.35 KB  
Libraries  -  Module::MakefilePL::Parse 0.12
Module::MakefilePL::Parse is a Perl module to parse required modules from Makefile.PL. SYNOPSIS use Module::MakefilePL::Parse; open $fh, Makefile.PL; $parser = Module::MakefilePL::Parse->new( join("", ) ); $info = $parser->required;...
8.19 KB  
Libraries  -  sqlpp 0.06
sqlpp Perl package is a SQL preprocessor. sqlpp is a conventional cpp-alike preprocessor taught to understand SQL ( PgSQL, in particular) syntax specificities. In addition to the standard #define/#ifdef/#else/#endif cohort, provides also...
10.24 KB