Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #3866
| From | Tom Anderson <twic@urchin.earth.li> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Concurrent bidirectional one-to-many map? |
| Date | 2011-05-09 18:28 +0100 |
| Organization | Stack Usenet News Service |
| Message-ID | <alpine.DEB.2.00.1105091825310.18864@urchin.earth.li> (permalink) |
| References | (1 earlier) <iq1mmc$hbv$1@dont-email.me> <iq348b$iv1$1@news.albasani.net> <nsadnUZcjoF01ljQnZ2dnUVZ_gednZ2d@earthlink.com> <alpine.DEB.2.00.1105080428540.28763@urchin.earth.li> <08586289-8935-4532-93d0-e8c7dd45cb24@c1g2000yqe.googlegroups.com> |
On Mon, 9 May 2011, Robert Klemme wrote: > On 8 Mai, 05:51, Tom Anderson <t...@urchin.earth.li> wrote: >> On Sat, 7 May 2011, Patricia Shanahan wrote: >>> On 5/7/2011 2:43 AM, Sebastian wrote: >>> ... >>>> To give an example, I'm trying to solve a problem like this: >>>> Associate tasks with workspaces, where a workspace may hold many >>>> tasks,but a task may be associate with at most one workspace. >>> ... >> >>> I'd deal with that sort of problem by having a custom data structure >>> that uses java.util structures in its implementation. >> >> It's not obvious to me how to make it work correctly with good >> concurrency; the ConcurrentHashMap approach is to stripe the locks, so as >> to partition the hashtable into independently-locked domains, but to use >> the same set of stripes for the reverse mapping, you would need to be able >> to tell which stripe a value belongs to - and that can only be done by >> looking it up in the very reverse mapping you are worrying about locking! >> Can you have a separate set of stripes for the reverse mapping? Do you >> need some multi-phase approach, where you determine the stripes without >> locking, then acquire the locks to do the actual lookup or insertion? Is >> there some lock-free voodoo which could be used? Is there any mileage in >> using a union-find structure to collapse the sets of values into a single >> representative which could participate in a 1:1 key-value mapping? I am >> certainly not any sort of data structure guru, but i don't have answers to >> any of those questions. That makes it a problem worth discussing here, in >> my book. Does anyone have any ideas on how to do this? > > This could be solved by standard relationship implementations: Make > workspace a member of Task and synchronize accesses on Task. Example: > > https://gist.github.com/962538 > > By using monitors of Task and Workspace we have quite fine granularity > of locking. True! The fastest map is no map at all. If the OP can't modify Task or Workspace, perhaps he could consider writing wrappers which refer to each other, a TaskWithWorkspace, and WorkspaceWithTasks (perhaps with better names), and passing those around rather than plain Tasks and Workspaces. tom -- It is a formal cultural policy to show unreasonable bias towards any woman who is both attractive and weird.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-06 22:07 +0200
Re: Concurrent bidirectional one-to-many map? markspace <-@.> - 2011-05-06 13:45 -0700
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-07 11:43 +0200
Re: Concurrent bidirectional one-to-many map? Lew <noone@lewscanon.com> - 2011-05-07 07:59 -0400
Re: Concurrent bidirectional one-to-many map? Lew <noone@lewscanon.com> - 2011-05-07 12:49 -0400
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-07 21:34 +0200
Re: Concurrent bidirectional one-to-many map? Patricia Shanahan <pats@acm.org> - 2011-05-07 06:40 -0700
Re: Concurrent bidirectional one-to-many map? Tom Anderson <twic@urchin.earth.li> - 2011-05-08 04:51 +0100
Re: Concurrent bidirectional one-to-many map? Robert Klemme <shortcutter@googlemail.com> - 2011-05-09 06:43 -0700
Re: Concurrent bidirectional one-to-many map? Tom Anderson <twic@urchin.earth.li> - 2011-05-09 18:28 +0100
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-09 22:57 +0200
Re: Concurrent bidirectional one-to-many map? Lew <noone@lewscanon.com> - 2011-05-09 18:36 -0400
Re: Concurrent bidirectional one-to-many map? Tom Anderson <twic@urchin.earth.li> - 2011-05-10 08:34 +0100
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-11 10:09 +0200
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-11 10:51 +0200
Re: Concurrent bidirectional one-to-many map? Robert Klemme <shortcutter@googlemail.com> - 2011-05-11 04:55 -0700
Re: Concurrent bidirectional one-to-many map? Lew <noone@lewscanon.com> - 2011-05-11 09:00 -0400
Re: Concurrent bidirectional one-to-many map? Sebastian <sebastian@undisclosed.invalid> - 2011-05-11 20:47 +0200
Re: Concurrent bidirectional one-to-many map? markspace <-@.> - 2011-05-07 09:35 -0700
Re: Concurrent bidirectional one-to-many map? Michal Kleczek <kleku75@gmail.com> - 2011-05-09 16:42 +0200
Re: Concurrent bidirectional one-to-many map? Roedy Green <see_website@mindprod.com.invalid> - 2011-05-07 03:46 -0700
csiph-web