PreviousUpNext

15.4.956  src/lib/src/quickstring.pkg

## quickstring.pkg

# Compiled by:
#     src/lib/std/standard.lib



# Thread-safe version of Quickstring,
# protecting the global hashtable with a lock.


package quickstring: (weak)  Quickstring {              # Quickstring                   is from   src/lib/src/quickstring.api
    #
    include threadkit;                                          # threadkit                     is from   src/lib/src/lib/thread-kit/src/core-thread-kit/threadkit.pkg

    include quickstring__premicrothread;                        # quickstring__premicrothread   is from   src/lib/src/quickstring--premicrothread.pkg

    stipulate
        #
        lock = make_maildrop ();
        #
    herein

        fun atomically f a
            =
            {
log::note_in_ramlog .{ sprintf "atomically calling empty  *uninterruptible_scope_mutex d=%d   --threadkit-winix-data-file-for-os-g"   *microthread_preemptive_scheduler::uninterruptible_scope_mutex; };
                take_from_maildrop lock;
                #
                f a
                before
{
log::note_in_ramlog .{ sprintf "atomically calling fill  *uninterruptible_scope_mutex d=%d   --threadkit-winix-data-file-for-os-g"   *microthread_preemptive_scheduler::uninterruptible_scope_mutex; };
                    put_in_maildrop (lock, ());
};
            };
    end;

    from_string    =  atomically  from_string;
    from_substring =  atomically  from_substring;
};


## Author: Matthias Blume (blume@tti-c.org)
## Copyright (c) 2005 by The Fellowship of SML/NJ
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2013,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext