diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-02-09 11:11:22 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-06-05 08:17:40 +0000 |
commit | 89d6a36bc64b0e95136c925f4ed37f4520f9cb3a (patch) | |
tree | 3be8240203f456c756cd5de6394f89fc5d008f2f /src/libs/clangsupport/clangcodemodelconnectionclient.cpp | |
parent | 14a9133abb8b15c8feb9be04d39e31d5a527fad4 (diff) | |
download | qt-creator-89d6a36bc64b0e95136c925f4ed37f4520f9cb3a.tar.gz |
Clang: Disable internal threads in libclang
We already run all operations in threads to avoid blocking, there is no
need to start more threads within libclang. Before this change, a
reparse would trigger 3 threads to start:
1. clangbackend: Utils::runAsync() for the job
2. libclang-internal: thread for reparse
3. libclang-internal: thread for annotating tokens (highlighting)
Ensure that we use the same stack size for our threads as libclang was
doing internally. C++ parsers usually have higher stack size
requirements.
Change-Id: I2f67602ddfbf77ea2c69144b56acf64ba08041f6
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src/libs/clangsupport/clangcodemodelconnectionclient.cpp')
-rw-r--r-- | src/libs/clangsupport/clangcodemodelconnectionclient.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/libs/clangsupport/clangcodemodelconnectionclient.cpp b/src/libs/clangsupport/clangcodemodelconnectionclient.cpp index 1938d06353..33d8987024 100644 --- a/src/libs/clangsupport/clangcodemodelconnectionclient.cpp +++ b/src/libs/clangsupport/clangcodemodelconnectionclient.cpp @@ -25,6 +25,7 @@ #include "clangcodemodelconnectionclient.h" +#include <utils/environment.h> #include <utils/temporarydirectory.h> #include <QCoreApplication> @@ -50,6 +51,10 @@ ClangCodeModelConnectionClient::ClangCodeModelConnectionClient( m_processCreator.setTemporaryDirectoryPattern("clangbackend-XXXXXX"); m_processCreator.setArguments({connectionName()}); + Utils::Environment environment; + environment.set(QStringLiteral("LIBCLANG_NOTHREADS"), QString()); + m_processCreator.setEnvironment(environment); + stdErrPrefixer().setPrefix("clangbackend.stderr: "); stdOutPrefixer().setPrefix("clangbackend.stdout: "); } |