C++ unordered_map требует слишком много времени для уничтоженияLinux

Ответить
Гость
 C++ unordered_map требует слишком много времени для уничтожения

Сообщение Гость »


У меня есть программа на C++, которую я использую в качестве службы на своей старой Linux-машине: я запускаю ее с помощью программы sv start и останавливаю с помощью программы sv stop - к сожалению, иногда я могу' правильно, останови это:

Код: Выделить всё

-bash-4.2# sv stop program
timeout: run: program: (pid 1234) 15666s, want down, got TERM
Насколько я знаю, sv stop отправляет тайм-аут через 7 секунд, если процесс все еще не завершается, но моей программе иногда требуется 10 и более секунд, чтобы просто вернуть 0...< /p>
Как показали эксперименты, большая часть этого времени уходит на уничтожение статического dataMap unordered_map с более чем 50 тысячами таких пар (может быть, потому, что он переносится на диск, не знаю):
р>

Код: Выделить всё

struct Data {
int id;
bool flag;
std::string str1;
std::string str2;
std::string str3;
std::string str4;
}
static std::unordered_map dataMap
Of course, there are some workarounds: I can use 'sv -w secs stop program' to increase the timeout, or I can just use pointer with new without delete - nevertheless, is there any way to speed up the destroying?
Maybe another container will be destroyed faster?


Источник: https://stackoverflow.com/questions/781 ... to-destroy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»