This introduces a new option to forcefully disable threads.
This commit is contained in:
parent
86241e2871
commit
6c33f518a8
|
@ -105,7 +105,7 @@ if(NOT SIMDJSON_EXCEPTIONS)
|
||||||
target_compile_definitions(simdjson-internal-flags INTERFACE SIMDJSON_EXCEPTIONS=0)
|
target_compile_definitions(simdjson-internal-flags INTERFACE SIMDJSON_EXCEPTIONS=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(SIMDJSON_ENABLE_THREADS "Enable threaded operation" ON)
|
option(SIMDJSON_ENABLE_THREADS "Link with thread support" ON)
|
||||||
if(SIMDJSON_ENABLE_THREADS)
|
if(SIMDJSON_ENABLE_THREADS)
|
||||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
|
set(THREADS_PREFER_PTHREAD_FLAG TRUE)
|
||||||
|
@ -113,7 +113,13 @@ if(SIMDJSON_ENABLE_THREADS)
|
||||||
target_link_libraries(simdjson-flags INTERFACE Threads::Threads)
|
target_link_libraries(simdjson-flags INTERFACE Threads::Threads)
|
||||||
target_link_libraries(simdjson-flags INTERFACE ${CMAKE_THREAD_LIBS_INIT})
|
target_link_libraries(simdjson-flags INTERFACE ${CMAKE_THREAD_LIBS_INIT})
|
||||||
target_compile_options(simdjson-flags INTERFACE ${CMAKE_THREAD_LIBS_INIT})
|
target_compile_options(simdjson-flags INTERFACE ${CMAKE_THREAD_LIBS_INIT})
|
||||||
target_compile_definitions(simdjson-flags INTERFACE SIMDJSON_THREADS_ENABLED=1)
|
target_compile_definitions(simdjson-flags INTERFACE SIMDJSON_THREADS_ENABLED=1) # This will be set in the code automatically.
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Some users compile simdjson with thread support but still do not want simdjson to use threads.
|
||||||
|
option(SIMDJSON_DO_NOT_USE_THREADS_NO_MATTER_WHAT "Whether we enabled thread support or not (SIMDJSON_ENABLE_THREADS), do not use threads. This option does nothing when thread support is not enabled." OFF)
|
||||||
|
if(SIMDJSON_DO_NOT_USE_THREADS_NO_MATTER_WHAT)
|
||||||
|
target_compile_definitions(simdjson-flags INTERFACE SIMDJSON_DO_NOT_USE_THREADS_NO_MATTER_WHAT=1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SIMDJSON_USE_LIBCPP)
|
if(SIMDJSON_USE_LIBCPP)
|
||||||
|
|
|
@ -101,6 +101,12 @@ A `document_stream` instance uses at most two threads: there is a main thread an
|
||||||
You should expect the main thread to be fully occupied while the worker thread is partially busy
|
You should expect the main thread to be fully occupied while the worker thread is partially busy
|
||||||
(e.g., 80% of the time).
|
(e.g., 80% of the time).
|
||||||
|
|
||||||
|
If you compile simdjson with thread support and you still do not want simdjson to use threads,
|
||||||
|
you can forcefully disable them by setting the SIMDJSON_DO_NOT_USE_THREADS_NO_MATTER_WHAT macro
|
||||||
|
to 1 in C++, or by passing SIMDJSON_DO_NOT_USE_THREADS_NO_MATTER_WHAT=ON to cmake. It is a
|
||||||
|
compile-time decision: if you disable the threads with SIMDJSON_DO_NOT_USE_THREADS_NO_MATTER_WHAT,
|
||||||
|
you will not be able to use threads in simdjson unless you recompile.
|
||||||
|
|
||||||
Support
|
Support
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,6 @@ compiling for a known 64-bit platform."
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// workaround for large stack sizes under -O0.
|
// workaround for large stack sizes under -O0.
|
||||||
// https://github.com/simdjson/simdjson/issues/691
|
// https://github.com/simdjson/simdjson/issues/691
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
@ -136,6 +135,13 @@ compiling for a known 64-bit platform."
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if SIMDJSON_DO_NOT_USE_THREADS_NO_MATTER_WHAT
|
||||||
|
// No matter what happened, we undefine SIMDJSON_THREADS_ENABLED and so disable threads.
|
||||||
|
#undef SIMDJSON_THREADS_ENABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(__clang__)
|
#if defined(__clang__)
|
||||||
#define NO_SANITIZE_UNDEFINED __attribute__((no_sanitize("undefined")))
|
#define NO_SANITIZE_UNDEFINED __attribute__((no_sanitize("undefined")))
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
|
|
Loading…
Reference in New Issue