public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Torvald Riegel <triegel@redhat.com>
To: Szabolcs Nagy <szabolcs.nagy@arm.com>
Cc: Martin Sebor <msebor@redhat.com>,
	GNU C Library <libc-alpha@sourceware.org>
Subject: Re: [PATCH] pthread_once hangs when init routine throws an exception [BZ #18435]
Date: Wed, 03 Jun 2015 11:07:00 -0000	[thread overview]
Message-ID: <1433329167.21461.97.camel@triegel.csb> (raw)
In-Reply-To: <556C31DE.4020803@arm.com>

On Mon, 2015-06-01 at 11:20 +0100, Szabolcs Nagy wrote:
> (libstdc++ lock semantics does not match posix mutexes either:
> for c++ weaker acquire-release ordering is enough).

I agree regarding what's specified.  However, I don't see us use
anything stronger than mo_acquire for lock acquisitions in glibc because
it would slow down the vast majority of uses in order to make arguably
arcane use cases work that never worked with glibc so far (e.g., abusing
locks or other sync ops that return success as full barriers and abusing
semaphores as mo_relaxed atomics).

> so maybe libstdc++ should consider implementing locks and call_once
> with the correct semantics independent of libc

There's pros and cons to that.  I agree that libstdc++ could implement
exactly the semantics it requires and benefit in some cases (e.g., don't
have to abort HTM txns on trylock in the Intel-RTM-based HLE
implementation).  However, we'd duplicate code that we'd eventually like
to tune.  libstdc++ couldn't use tuning of the PThreads implementation
on non-glibc platforms.

Most importantly perhaps, in the long run, the way you block or spin can
depend on how threads are scheduled and distributed across the machine.
This is information that's most naturally contained in glibc, so if you
want to make use of that synergy, implementing base synchronization
together with threads in glibc is the easiest way.  Likewise, libstdc++
can share compute resources with non-C++ code (e.g., OpenMP stuff), and
glibc is naturally below both libgomp and libstdc++.



  parent reply	other threads:[~2015-06-03 10:59 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <556B7F10.40209@redhat.com>
2015-06-01  8:39 ` Florian Weimer
2015-06-01 16:27   ` Martin Sebor
2015-06-02  9:53     ` Mike Frysinger
2015-06-04 21:12       ` Martin Sebor
2015-06-03 11:36     ` Torvald Riegel
2015-06-01 10:20 ` Szabolcs Nagy
2015-06-01 19:47   ` Martin Sebor
2015-06-03 11:07     ` Torvald Riegel
2015-06-03 11:11       ` Jonathan Wakely
2015-06-03 20:14       ` Rich Felker
2015-06-03 20:24         ` Martin Sebor
2015-06-03 23:49           ` Rich Felker
2015-06-04  1:47             ` Martin Sebor
2015-06-04  5:38               ` Rich Felker
2015-06-04  7:29                 ` Martin Sebor
2015-06-08 11:41                 ` Jonathan Wakely
2015-06-08 14:38                   ` Szabolcs Nagy
2015-06-04  8:20           ` Torvald Riegel
2015-06-08 11:48             ` Jonathan Wakely
2015-06-08 16:01               ` Florian Weimer
2015-06-03 11:07   ` Torvald Riegel [this message]
2015-06-01 14:39 ` Andreas Schwab
2015-06-09 19:49 ` Martin Sebor
2015-06-15 22:14   ` Martin Sebor
2015-06-23  7:48     ` [PING 2] " Martin Sebor
     [not found]       ` <5593256B.5060402@redhat.com>
2015-07-01  0:06         ` [PING 3] " Rich Felker
2015-07-01 20:18           ` Martin Sebor
2015-07-01 21:27             ` Joseph Myers
2015-07-06 13:18   ` Szabolcs Nagy
2015-07-06 14:16     ` Martin Sebor
2015-07-06 14:58       ` Adhemerval Zanella
2015-07-06 16:33         ` Szabolcs Nagy
2015-07-06 17:09           ` Szabolcs Nagy
2015-07-08 11:00             ` Szabolcs Nagy
2015-07-08 16:09               ` Carlos O'Donell
2015-07-08 16:33                 ` Torvald Riegel
2015-07-08 16:52                   ` Szabolcs Nagy
2015-07-08 17:14                     ` Carlos O'Donell
2021-03-02 16:43                 ` Jakub Jelinek
2015-07-08 16:16 ` Carlos O'Donell
2015-07-08 21:28   ` Martin Sebor
2015-07-08 22:13     ` Szabolcs Nagy
2015-07-08 22:52       ` Martin Sebor
2015-07-08 23:42         ` Szabolcs Nagy
2015-07-09  4:46         ` Martin Sebor
2015-07-09 23:41           ` Martin Sebor
2021-03-03 12:52 Jakub Jelinek
2021-03-04 11:50 ` Florian Weimer
2021-03-04 13:00   ` Jakub Jelinek
2021-03-04 13:26     ` Florian Weimer
2021-03-04 14:14       ` Jakub Jelinek

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=1433329167.21461.97.camel@triegel.csb \
    --to=triegel@redhat.com \
    --cc=libc-alpha@sourceware.org \
    --cc=msebor@redhat.com \
    --cc=szabolcs.nagy@arm.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).