I do keep seeing references to Java concurrent stuff people are porting to Go. I have to check it out.
I need an ordered k/v store (find the next key greater-than)... and I was trying to see how concurrency could be added to things like https://github.com/google/btree, which, in turns out, at least in single goroutine form, wipes the floor soundly against red-black trees and radix trees. It's even way faster than the built in Go map, while giving ordered key lookup, not just hash table operations. The only trade-off is that it is suuuuper slow for deletes. On Friday, March 14, 2025 at 5:32:08 AM UTC Robert Engels wrote: > I know some people are put off by stuff like this, but reading the Java > JDK concurrent package provides a wealth of information- it is well > documented and almost all are referenced implementations of academic > papers. In this case, the Java concurrent hash map would be an applicable > design. > > You can see some of this - not nearly as good or complete - in my > github.com/robaho/go-concurrency-test > > On Mar 14, 2025, at 12:17 AM, Jason E. Aten <j.e....@gmail.com> wrote: > > oh nice. I like the hashing idea to pick a shard lock out of array...that > way > > I don't have to stick locks on, and bloat, every node in the btree. I can > just take the hash value modulo a the size of a fixed set of locks... > Thanks Robert. > > p.s. awl, thanks, yes... saw that. thank you. > > On Friday, March 14, 2025 at 4:29:46 AM UTC Robert Engels wrote: > >> I think it is easier to just hash and shard the data set the lock is >> protecting - ie a lock per shard. >> >> On Mar 13, 2025, at 10:52 PM, atomly <ato...@gmail.com> wrote: >> >> >> >> On Thu, Mar 13, 2025 at 20:29 Jason E. Aten <j.e....@gmail.com> wrote: >> >>> Is there a common way to do sharded read-write locks now? >>> I mean faster than sync.RWMutex. >>> >>> I tried https://github.com/jonhoo/drwmutex which is from quite a >>> while back... >>> >> >> Have you read the original thread that spawned this, you might find it >> pretty informative if not: >> >> https://groups.google.com/g/golang-nuts/c/zt_CQssHw4M/m/TteNG44geaEJ?pli=1 >> >> >> -awl >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts...@googlegroups.com. >> To view this discussion visit >> https://groups.google.com/d/msgid/golang-nuts/CAA_Y42wUOYwnaO0ZDyC2USCMsZqVQXGck9q%2Bfb8inWoxG01brA%40mail.gmail.com >> >> <https://groups.google.com/d/msgid/golang-nuts/CAA_Y42wUOYwnaO0ZDyC2USCMsZqVQXGck9q%2Bfb8inWoxG01brA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> >> -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts...@googlegroups.com. > > To view this discussion visit > https://groups.google.com/d/msgid/golang-nuts/08738a3e-2c94-4f52-8f49-16b287303c6bn%40googlegroups.com > > <https://groups.google.com/d/msgid/golang-nuts/08738a3e-2c94-4f52-8f49-16b287303c6bn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/f005f99f-5c5c-4a81-a183-9501dc6f0972n%40googlegroups.com.