• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: possibly OT: threadsafe libc
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: possibly OT: threadsafe libc


  • Subject: Re: possibly OT: threadsafe libc
  • From: Eric Albert <email@hidden>
  • Date: Mon, 21 Nov 2005 09:45:17 -0800

On Nov 21, 2005, at 7:03 AM, Philip Lukidis wrote:

Hello. I was wondering if there was a fully threadsafe libc version which I
can use. I'll be using pthreads and was hoping there would be an easy way
to know which libraries are threadsafe or not.


Does Apple formally specify which functions in libc are threadsafe? I have
heard that several libc functions have a _r version, but was hoping that
there would be a fully threadsafe library which I can link to. For example,
sprintf does not have a _r version...does that mean I have to wrap sprintf
calls with a mutex? I would assume not, but this would be my intuition
speaking and not a formal written declaration by Apple on which
libraries/calls are threadsafe.


So, how to absolutely know if a libc call is threadsafe?

It's unfortunate that we haven't yet documented the thread safety of Libc in the same way as, say, Sun does for its man pages. However, all of Libc is threadsafe except where it's explicitly documented not to be...and I can't think of any cases in which it's documented to not be threadsafe. Mac OS X uses multiple threads very extensively, so a threadsafe Libc is essentially required.


Where _r functions are available, they're provided for compatibility or because some folks find the extra context argument useful, not because the non-_r version is not threadsafe.

As for sprintf specifically, I wonder how anyone would implement a non-threadsafe version. I suppose calling it with the same destination buffer from two threads simultaneously probably wouldn't work out well, but expecting that to produce useful results anywhere just doesn't seem like a good idea in the first place.

-Eric

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: possibly OT: threadsafe libc
      • From: Steve Checkoway <email@hidden>
References: 
 >possibly OT: threadsafe libc (From: Philip Lukidis <email@hidden>)

  • Prev by Date: Re: Avoiding stepping-in
  • Next by Date: Xcode 2.2: /usr/bin/ld: Undefined symbols: __Unwind_Resume
  • Previous by thread: possibly OT: threadsafe libc
  • Next by thread: Re: possibly OT: threadsafe libc
  • Index(es):
    • Date
    • Thread