[M3devel] per thread data?
Tony Hosking
hosking at cs.purdue.edu
Thu Mar 19 00:14:59 CET 2009
I have no problem putting the exception handler stack thread local
into the activation thread local.
On 18 Mar 2009, at 20:11, Jay wrote:
> I'm not looking at it right now, but doesn't seem rather piggy to
> have two thread locals and data on the side?
>
>
> I'm guessing the data on the side is needed because we need to be
> able to enumerate our threads, to suspend them all?
>
>
> I understand that having multiple thread locals optimizes their use,
> but it seems greedy.
> vs. a small heap allocation that combines them.
>
> Or in fact.. presumably there could just be one thread local that is
> the thread pointer, and the handler link could be put at the start,
> for architectures where zero offset is smaller/faster than non-zero
> offset.
>
>
> Another idea, of course, is to look into "__thread",
> "__declspec(thread)".
>
> On Windows and probably all platforms they exist on, they are nicely
> more efficient than pthread_get/setspecific, except on Windows they
> don't really work acceptably prior to Vista -- they only work
> in .exes and their static dependencies, not any .dll you load after
> the process starts with LoadLibrary (dlopen).
>
>
> Does "__thread" work well on most non-Windows platforms?
> i.e. even if shared object is loaded with dlopen?
>
>
> I could have sworn I saw code out there that was "adaptive".
> It easily/efficiently checked if it was loaded with LoadLibrary or
> not.
> If so, it'd TlsGet/SetValue (pthread_get/setspecific).
> If not, it'd use __declspec(thread) (__thread).
> The check was based on if __tlsindex was not zero or somesuch. I
> couldn't track it down though.
>
>
> In either case, yes, I know, one of the thread locals at least is
> gone on platforms that have stack walkers, e.g. Solaris, and
> potentially NT, and maybe others.
>
>
> - Jay
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20090319/5516468d/attachment-0002.html>
More information about the M3devel
mailing list