threads: add a thread_local autoconf check
This commit is contained in:
parent
bba9bd0d9d
commit
f7f7e2cd34
2 changed files with 25 additions and 0 deletions
22
configure.ac
22
configure.ac
|
@ -659,6 +659,28 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
TEMP_LDFLAGS="$LDFLAGS"
|
||||||
|
LDFLAGS="$TEMP_LDFLAGS $PTHREAD_CFLAGS"
|
||||||
|
AC_MSG_CHECKING([for thread_local support])
|
||||||
|
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||||
|
#include <thread>
|
||||||
|
static thread_local int foo = 0;
|
||||||
|
static void run_thread() { foo++;}
|
||||||
|
int main(){
|
||||||
|
for(int i = 0; i < 10; i++) { std::thread(run_thread).detach();}
|
||||||
|
return foo;
|
||||||
|
}
|
||||||
|
])],
|
||||||
|
[
|
||||||
|
AC_DEFINE(HAVE_THREAD_LOCAL,1,[Define if thread_local is supported.])
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
],
|
||||||
|
[
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
LDFLAGS="$TEMP_LDFLAGS"
|
||||||
|
|
||||||
# Check for different ways of gathering OS randomness
|
# Check for different ways of gathering OS randomness
|
||||||
AC_MSG_CHECKING(for Linux getrandom syscall)
|
AC_MSG_CHECKING(for Linux getrandom syscall)
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
|
||||||
|
|
|
@ -11,6 +11,9 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifdef DEBUG_LOCKCONTENTION
|
#ifdef DEBUG_LOCKCONTENTION
|
||||||
|
#if !defined(HAVE_THREAD_LOCAL)
|
||||||
|
static_assert(false, "thread_local is not supported");
|
||||||
|
#endif
|
||||||
void PrintLockContention(const char* pszName, const char* pszFile, int nLine)
|
void PrintLockContention(const char* pszName, const char* pszFile, int nLine)
|
||||||
{
|
{
|
||||||
LogPrintf("LOCKCONTENTION: %s\n", pszName);
|
LogPrintf("LOCKCONTENTION: %s\n", pszName);
|
||||||
|
|
Loading…
Reference in a new issue