From: Simon Marchi <simark@simark.ca>
To: Simon Marchi <simon.marchi@polymtl.ca>,
Tom Tromey <tom@tromey.com>,
Simon Marchi <simon.marchi@efficios.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 3/6] gdbsupport: use dynamic partitioning in gdb::parallel_for_each
Date: Fri, 13 Jun 2025 15:56:18 -0400 [thread overview]
Message-ID: <cf985f8e-6627-49ac-8ed9-219e12248c68@simark.ca> (raw)
In-Reply-To: <46f028fd-14f8-49a5-afc1-d6661d6f84ac@polymtl.ca>
On 6/13/25 3:22 PM, Simon Marchi wrote:
> Another idea I had (but didn't try) was to make lambdas receive a
> "magic" range object, like athis:
>
> [&] (gdb::dynamic_range<dwarf2_per_cu *> range)
> {
> for (dwarf2_per_cu *cu : range)
> process_unit (cu);
> }
>
> "range" would get work items from the work queue in batches, but yield
> one at a time. It would reach its end when the work queue is empty.
> It will be a bit of work to implement, but it would have the advantage
> that any per-worker state could be right there in the lambda, like we
> have today.
Ah, I remembered why I didn't do this. It wouldn't play well with how
minimal_symbol_reader::install() currently uses gdb::parallel_for_each.
Currently, it receives one contiguous range [start,end). After having
computed the demangled names and hashes for the whole range, each worker
locks a mutex and installs the names in a shared hash table.
In my patch, it's similar, but each worker installs the names in the
share hash table at the end of each small range it receives.
With my "magic" iterator idea, it wouldn't be clear when and how to
install the names in the shared hash table.
Simon
next prev parent reply other threads:[~2025-06-13 19:56 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-05 20:15 [PATCH 1/6] gdb: re-work parallel-for-selftests.c Simon Marchi
2025-05-05 20:15 ` [PATCH 2/6] gdbsupport: make gdb::parallel_for_each's n parameter a template parameter Simon Marchi
2025-06-13 17:55 ` Tom Tromey
2025-06-13 18:43 ` Simon Marchi
2025-05-05 20:15 ` [PATCH 3/6] gdbsupport: use dynamic partitioning in gdb::parallel_for_each Simon Marchi
2025-06-13 18:29 ` Tom Tromey
2025-06-13 19:22 ` Simon Marchi
2025-06-13 19:56 ` Simon Marchi [this message]
2025-06-13 20:12 ` Simon Marchi
2025-06-26 19:27 ` Simon Marchi
2025-07-03 19:23 ` Tom Tromey
2025-07-03 19:36 ` Simon Marchi
2025-05-05 20:15 ` [PATCH 4/6] gdbsupport: factor out work queue from parallel-for.h Simon Marchi
2025-06-13 18:33 ` Tom Tromey
2025-06-13 19:24 ` Simon Marchi
2025-05-05 20:15 ` [PATCH 5/6] gdbsupport: add async parallel_for_each version Simon Marchi
2025-06-13 18:39 ` Tom Tromey
2025-06-13 19:29 ` Simon Marchi
2025-05-05 20:15 ` [PATCH 6/6] gdb/dwarf: use dynamic partitioning for DWARF CU indexing Simon Marchi
2025-05-27 14:44 ` [PATCH 1/6] gdb: re-work parallel-for-selftests.c Simon Marchi
2025-06-13 17:48 ` Tom Tromey
2025-06-13 18:38 ` Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cf985f8e-6627-49ac-8ed9-219e12248c68@simark.ca \
--to=simark@simark.ca \
--cc=gdb-patches@sourceware.org \
--cc=simon.marchi@efficios.com \
--cc=simon.marchi@polymtl.ca \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox