I am currently writing a module which inherits from Tie::Hash and makes use of the hash interface to hide much of the details of the underlying module. One feature which I am looking now at incorporating into this interface is locking - This is so that the same underlying data source can be used by multiple processes. The following is the schema which I envision for this locking of the underlying data source within the tied-hash interface:

CLEARwrite lock
DELETEwrite lock
EXISTSwrite lock
FETCHread lock
FIRSTKEYread lock
NEXTKEYread lock
STOREwrite lock
TIEHASH?
UNTIE?

I am however unsure of what locking or synchronisation, if any, I should be performing upon TIEHASH or UNTIE - Note that I have not outlying any specifics of the underlying data source or locking mechanism as these are user-modifiable components of this module. eg.

tie %hash, 'MyClass', { 'Lock' => 'Semaphore', 'Store' => 'DB_File' }, { .. more options .. } or die $!;

As such what I am looking for with this post is a more general discussion as to the general aspects of synchronisation locking within tied hashes rather than specific approaches or caveats.

 


In reply to Locking and synchronisation within tied hashes by rob_au

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.