Ooops! Have you looked at the RFC itself or only at the title? "Database" in the RFC means roughly the same as "Hash" in Perl (see the date of the RFC). And with easy I meant straightforward programming. No special cases, no race conditions. The amount of code is not typed between two messages. If it were so, I had said "trivial" not "easy".
But I can give an outline:
- Every thread has a replica
- The thread querys its own replica by posting a query into its own input-queue, not by direct access
- The thread writes its own replica by posting a modification request into its own input-queue, not by direct access
- If a thread waits or wishes to access its replica, it dequeues all requests from its input-queue and works the algorithm in RFC677
- Any modification requests arising from this Algorithm are queued into the input-queues of the appropriate threads.
- If any keys so modified are typed as Perl-source, the thread recompiles its own subs
Because no replica is ever modified or seen by another thread as its own, no locking is necessary.
Of course all data referenced by data in the "Database" must be replicated themselves and stored in the "Database".
You see that I can't modify your example, because I had to write a module for the RFC677-Algorithm.
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.