NTL 9.8.0: thread safety for the masses

An NTL discussion forum

NTL 9.8.0: thread safety for the masses

Postby victorshoup » Tue Apr 26, 2016 1:45 pm

So I finally figured out a way to get NTL to work in thread-safe mode
on a much broader range of platforms, including Mac OSX (10.10 and above)
and Linux with somewhat older gcc's (gcc version 4.8 and above).

This new version of NTL still requires many C++11 features in
thread-safe mode, but it does not require "thread_local" storage.
Rather, by default, it only uses gcc's older and simpler "__thread"
storage, along with some direct calls to pthread library functions.
One can override this default behavior by configuring with
NTL_DISABLE_TLS_HACK=on. With this hack disabled,
NTL still makes use of "__thread" storage wherever possible,
and only uses "thread_local" storage for certain variables
at block scope (and none at namespace scope). This generally
leads to more efficient access to TLS variables and reduces the
requirements on the compiler and run-time: many implementations
of thread_local, especially at namespace scope, tend to be
buggy and inefficient.

To get thread safety, one still needs to configure with NTL_THREADS=on,
or NTL_THREAD_BOOST=on.


I have no idea if any of this works on Windows. It would be interesting to
test some of this in Cygwin. I just learned that Cygwin can give you
an LP64 data model, which is very nice. I don't have access to a Windows
machine, so I can't test any of this myself.
victorshoup
Site Admin
 
Posts: 32
Joined: Mon Jan 13, 2014 3:18 am

Return to NTL

Who is online

Users browsing this forum: No registered users and 1 guest

cron