Berkus
через раз
Matwey
А как ускорить сборку юнит-тестов бустовых?
Matwey
Они просто целую вечность собираются
Berkus
А как ускорить сборку юнит-тестов бустовых?
в документации есть параграф
Matwey
Тесты написанные на boost.unit.test
Matwey
Я пробовал
Matwey
Сильно лучше не стало от этого
Matwey
Ты же имеешь ввиду динамическую линковку?
Berkus
нет
Andrey
Вот к меня плохой раз видимо. Google test работает из коробки со статик либами
𝓓𝓮𝓿𝓮𝓵𝓸𝓹𝓮𝓻
пардон )
Berkus
Вот к меня плохой раз видимо. Google test работает из коробки со статик либами
у гугл теста есть проблема - его надо компилить полностью с нуля с твоими флагами компиляции иначе он нифига не работает и падает в очень странных местах
Berkus
Ты же имеешь ввиду динамическую линковку?
ну короче инклюдить <boost/test/unit_test.hpp> вместо included/unit_test.hpp>
Berkus
должно быть быстрее, оно многое из либы подтягивает тогда
Matwey
Хм, спасибо
Dmitry
можно как-нибудь вывести список либ, используемых прогой рунтаймово?
Dmitry
ltrace может так?
Dmitry
dependency walker
для линуха
Andrii
ld
Dmitry
ldd не только слинкованное может искать?
Dmitry
либы подгружаются динамически
Andrii
Тип через dlopen?
Anton
да. но зачем?
да не зачем, дело было не в бобине вообще )
Torteek
всем привет. решаю задачу. в задаче требуется сделать многопоточность при помощи тредпула. воркеры должны быть регулируемыми с равномерной нагрузкой. не совсем понятно как сделать равномерную нагрузку воркеров. объясните, пожалуйста
Aleksander
и как оценить нагрузку воркеров? :)
Torteek
правильно я понимаю, что если в очереди 10 заданий и у меня 2 воркера, то каждый воркер должен обработать по 5 заданий?
Torteek
при этом приоритет заданий одинаковый
Alexander "SonnySlave"
почему не воспользоваться стратегией "Осовободился? Получай следующую задачу" ?
Torteek
ну я если задания разные по степени тяжести, то как тогда быть?
хороший вопрос. есть какой-либо балансировщик в бусте?
Alexander "SonnySlave"
хороший вопрос. есть какой-либо балансировщик в бусте?
тебе задали выше хороший вопрос - как оценивать загрузку воркеров?
Anton
обычно при добавлении в очередь задания взводят семафор за которым следят воркеры. первый попавший свободный воркер берет задачу себе
Anton
балансировка получается автоматом..
Torteek
спасибо большое за пояснения и советы.
Max
Будет ли вывод -1 0 для всех компиляторов, или же это UB? Не очень понял, что в стандарте написано. #include <iostream> enum Type : int { FOO = -1, BAR = 0 }; int main() { std::cout << FOO << " " << BAR << std::endl; }
Anton
а в чем тут UB? все вполне прозрачно вроде
Max
все законно, никакого UB
Ну просто если убрать` : int`, то это точно UB, это я в стандарте нашел, а вот если оставить, то такого не нашел, слишком многа букаф
Max
Спасибо
Vitaliy
Если scoped enum объявить, то дефолтный тип для его элементов точно будет int.
Vitaliy
Если обычный, то там что-то мутное написано)
Vitaliy
Это да, надо статик каст юзать
Max
For an enumeration whose underlying type is not fixed, the underlying type is an integral type that can represent all the enumerator values defined in the enumeration. If no integral type can represent all the enumerator values, the enumeration is ill-formed. It is implementation-defined which integral type is used as the underlying type except that the underlying type shall not be larger than int unless the value of an enumerator cannot fit in an int or unsigned int. If the enumerator-list is empty, the underlying type is as if the enumeration had a single enumerator with value 0.
Александр
Berkus
а вот вам злой вопрос int func(std::string s) { char const* argv[] = { s.c_str(), "other", "args" }; main_func(3, (char**)argv); } насколько это плохо
Anatoly
а вот вам злой вопрос int func(std::string s) { char const* argv[] = { s.c_str(), "other", "args" }; main_func(3, (char**)argv); } насколько это плохо
seg fault при попытке модификации константы, поскольку запрета на изменение argv нет
Berkus
откуда там seg fault, s ведь в динамической памяти или в стеке
Anatoly
откуда там seg fault, s ведь в динамической памяти или в стеке
"other", "args" - вполне себе константы
Berkus
просто memory corruption
Крылатый
std::string ведь на стеке скорей всего.
Крылатый
тьфу
Крылатый
Бля
Крылатый
на куче*
Anatoly
просто memory corruption
при попытке записи в read only сегмент - seg fault
Berkus
то есть если мы не знаем точно как работает main_func лучше всего весь этот массив выделить динамически?
Berkus
хм, а если знаем то достаточно написать злой комментарий к коду
Anatoly
хм, а если знаем то достаточно написать злой комментарий к коду
достаточно изменить сигнатуру на const char* argv[], если main_func твой
Anatoly
не мой, внешний код (из boost.test)
ну, тогда можешь сделать смелое предпложение, что не меняется и напиши коммент
Anatoly
не продакшен же
Berkus
ну, все равно хочется чтоб было аккуратно
Constantine
там же чуть ли не const char * const * должно быть