• More about me as an inventor of many scalable algorithms..

    From Wisdom90@21:1/5 to All on Fri May 22 17:42:48 2020
    Hello...

    Read this:


    More about me as an inventor of many scalable algorithms..

    I am a white arab and i think i am like a genius, because i have
    invented many scalable algorithms and there implementations, and look
    for example at my just new invention of a scalable algorithm here:

    https://sites.google.com/site/scalable68/scalable-rwlock-that-works-accross-processes-and-threads

    As you have noticed, you have to be like a genius to be able to invent
    my above scalable algorithm of a scalable RWLock, because it has the
    following characteristics:

    1- It is Scalable
    2- It is Starvation-free
    3- It is fair
    4- It can be used across processes and threads
    5- It can be used as a scalable Lock across processes and threads
    by using my scalable AMLock on the writers side, or it can be
    used as a scalable RWLock.

    I am using my scalable Lock that is called scalable AMLock on the
    writers side.

    Here is why scalable Locks are really important:

    https://queue.acm.org/detail.cfm?id=2698990

    So all in all it is a really good invention of mine.

    Read my previous thoughts:

    Here is how to use my new invention that is my scalable RWLock
    across processes:

    Just create an scalable rwlock object by giving a name in one process by calling the constructor like this:

    scalable_rwlock.create('amine');


    And you can use the scalable rwlock object from another process by
    calling the constructor by using the name like this:

    scalable_rwlock.create('amine');


    So as you are noticing i have abstracted it efficiently..


    Read the rest of my previous thoughts:

    My new invention of a Scalable RWLock that works across processes and
    threads is here, and now it works on both Windows and Linux..

    Please download my source code and take a look at how i am making it
    work across processes by using FNV1a hash on both process ID and thread
    ID, FNV1a has a good dispersion, and FNV1a hash permits also my RWLock
    to be scalable.


    You can download it from my website here:

    https://sites.google.com/site/scalable68/scalable-rwlock-that-works-accross-processes-and-threads

    Description:

    This is my invention of a fast, and scalable and starvation-free and
    fair and lightweight Multiple-Readers-Exclusive-Writer Lock called
    LW_RWLockX, it works across processes and threads.

    The parameters of the constructor are: first parameter is the name of
    the scalable RWLock to be used across processes, if the name is empty,
    it will only be used across threads. The second parameter is the size of
    the array of the readers, so if the size of the array is equal to the
    number of parallel readers, so it will be scalable, but if the number of readers are greater than the size of the array , you will start to have contention. The third parameter is the size of the array of my scalable
    Lock that is called AMLock, the number of threads can go beyond the size
    of the array of the scalable AMLock, please look at the source code of
    my scalable algorithms to understand.

    I have also used my following implementation of FNV1a hash function to
    make my new variants of RWLocks scalable (since FNV1a is a hash
    algorithm that has good dispersion):

    function FNV1aHash(key:int64): UInt64;

    var
    i: Integer;
    key1:uint64;

    const

    FNV_offset_basis: UInt64 = 14695981039346656037;
    FNV_prime: UInt64 = 1099511628211;

    begin

    //FNV-1a hash

    Result := FNV_offset_basis;

    for i := 1 to 8 do
    begin
    key1:=(key shr ((i-1)*8)) and $00000000000000ff;
    Result := (Result xor key1) * FNV_prime;
    end;

    end;

    - Platform: Windows, Unix and Linux on x86

    Required FPC switches: -O3 -Sd

    -Sd for delphi mode....

    Required Delphi switches: -$H+ -DDelphi

    For Delphi XE-XE7 and Delphi tokyo use the -DXE switch

    You can configure it as follows from inside defines.inc file:

    {$DEFINE CPU32} and {$DEFINE Windows32} for 32 bit systems
    {$DEFINE CPU64} and {$DEFINE Windows64} for 64 bit systems


    Thank you,
    Amine Moulay Ramdane.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)