data: indexer processes

* TaskBuildIndex starts seperate indexer processes and communicates via shared memory
* indexer processes get restarted if they fail
* indexer processes are killed when the app closes or crashes
* added utility class SharedMemory to allocate and access shared memory, providing basic data structures
* added SharedMemoryGarbageCollector for keeping track of running instances and cleaning up shared memory in case of a crash
* show errors for source files that crashed during indexing
* added basic exception handling to task scheduling
* added option to turn off processes and use threads in preferences, but still use shared memory

fortune cookie message = Good news from someone dear is coming soon.
This commit is contained in:
Eberhard Graether
2017-05-04 15:50:59 +02:00
parent 9beea94fd8
commit 706119ebcc
109 changed files with 3351 additions and 1261 deletions
+4 -4
View File
@@ -246,14 +246,14 @@ void ApplicationSettings::setIndexerThreadCount(const int count)
setValue<int>("indexing/indexer_thread_count", count);
}
bool ApplicationSettings::getCancelIndexingOnFatalErrors() const
bool ApplicationSettings::getMultiProcessIndexingEnabled() const
{
return getValue<bool>("indexing/cancel_on_fatal_errors", true);
return getValue<bool>("indexing/multi_process_indexing", true);
}
void ApplicationSettings::setCancelIndexingOnFatalErrors(bool enabled)
void ApplicationSettings::setMultiProcessIndexingEnabled(bool enabled)
{
setValue<bool>("indexing/cancel_on_fatal_errors", enabled);
setValue<bool>("indexing/multi_process_indexing", enabled);
}
std::string ApplicationSettings::getJavaPath() const