Vladislav
Корея неожиданно сильна
Vladislav
Аж две команды в топ10
Sheridan
Други, чем черевато void func() { std::thread thrd(&CSession::alertIncoming, this); thrd.detach(); }
Sheridan
?
Berkus
тем что this будет удален когда-нибудь
Berkus
например задолго до того как тред вызовет alertIncoming()
Berkus
shared_from_this() спасет
Sheridan
тем что this будет удален когда-нибудь
ну это по факту синглтон, единственный на приложение и живущий вместе с ним всю его жизь
Berkus
тогда ничем
Sheridan
спасибо! :)
Berkus
но бинд синтаксис нинужен, используй лямбду
Berkus
void func() { std::thread th([this] { alertIncoming(); }); th.detach(); }
Sheridan
в коде так set_alert_notify([this]() { std::thread thrd(&CSession::alertIncoming, this); thrd.detach(); });
Sheridan
это коллбэк
Berkus
тогда лучше бы io_service.post([this] { alertIncoming(); }); и пропускать через тредпул
Yura
Есть те кто работает с QNX и ещё не спит?
Yura
Проблемка: пытаюсь запустить проект в моментиксе, а компилятор выдаёт: unknown symbol: __stack_chk_guard ldd:FATAL: Could not resolve all symbols
Anton
Могу завтра у коллег спросить
Yura
Будет очень круто!!!Большое спасибо!
Yura
А то ни один проект не грузится..
Anton
И тут решил скампилять с помощью MSYS2 juCi++... Я никогда бы не думал, что чутка возненавижу cmake.
Anton
Всё либы есть, но эта хреновина их не находит.
Vladislav
чутка?
Anton
Ага. Самую малость
Anton
Просто ещё раз убедился, что не всегда автогенераторы Makefile-ов являются панацеей при разработке.
Vladislav
у нас на работе вообще своя билд-система, не связанная с Makefile-ами
Anton
Норм.
Vladislav
for (size_t i = n - 1; i < n ; --i) { ... }
Vladislav
загадка: почему вот этот код сегфолтится? (с -mavx2 и -O3, как минимум) Бонусные очки за способ исправить vector<__m256i> v; for (int i = 0; i < 100; ++i) { v.emplace_back(); }
Stanislav
а где аргумент в emplace_back ?
Vladislav
а где аргумент в emplace_back ?
дефолтный конструктор вызываю
Vladislav
у emplace_back (Args&&...) аргументы
Stanislav
а __m256i для не знающих это что? )
Stanislav
понятно что 256 битный инт
Stanislav
гцц авх интегер ?
Vladislav
это векторный тип, может содержать 32 x uint8_t, 16 x uint16_t или 8 x uint32_t
Vladislav
не проще ли reserve в таком случае сделать?
не поможет, с некоторой вероятность засегфолтится
Stanislav
точнее vector<__m256i> v(100);
Stanislav
хм
Stanislav
Vladislav
да)
Stanislav
да прост тут билдили онду херню с полной оптимизацией fpu, на старых процах где такого не было тоже падало )
Stanislav
уточняю
Stanislav
надо подумать тогда лол
Vladislav
это да
Vladislav
но тут не этот случай)
Stanislav
c выравниванием косяк?
Stanislav
ну как поправить я точно хз, у гцц не помню как директивы для выравнивания работают
Vladislav
директивы для __m256i нужные проставлены в либе, как я понимаю, но это не поможет
Vladislav
я правда не совсем понимаю, зачем компилятор вообще гоняет данные через регистры тут - сегфолт происходит только в момент загрузки unaligned значения в регистр
Stanislav
а, т.е. ты сам еще не разобрался ? :)
Vladislav
я разобрался что проблема с выравниванием и как починить, но почему конкретно компилятор натыкается на эту проблему при простом перекидывании данных туда-сюда в памяти - непонятно :)
Stanislav
рассказывай давай )
Stanislav
кастомный аллокатор ? )
Vladislav
стандартный аллокатор выравнивает только по sizeof(align_t), который на моей машине 16
Vladislav
если вместо него воткнуть boost::alignment::aligned_allocator<__m256i> то все работает корректно)
Stanislav
если вместо него воткнуть boost::alignment::aligned_allocator<__m256i> то все работает корректно)
охохо, а без буста хорошее тестовое задание выйдет лол
Vladislav
в принципе, свой аналогичный аллокатор написать тоже несложно
Vladislav
благо есть std::align и (местами) posix_memalign
Stanislav
благо есть std::align и (местами) posix_memalign
ваш посикс не посикс не под никсами)
Vladislav
и да, это первый раз когда мне в работе пригодился кастомный аллокатор)
Alexander
Можно выделить на страницу больше и положить метадату в конец (типа оригинальный поинтер) и руками выровнять
Vladislav
внутри буста пачка #ifdef'ов на десяток разных случаев
Stanislav
и да, это первый раз когда мне в работе пригодился кастомный аллокатор)
думаю в геймдеве их активно должны юзать, поидее, надоп оглядеть сорцы UE4 на это )
Stanislav
пжди
Stanislav
http://en.cppreference.com/w/c/memory/aligned_alloc
Stanislav
а это?
Stanislav
а тьфу
Stanislav
там же вектор
Alexander
да, это самый портабельный способ, но не самый эффективный
Особенно когда аллокатор бадди или слаб внутри...
Vladislav
http://en.cppreference.com/w/c/memory/aligned_alloc
в виндовс его тоже нет, а так-то можно его в свой аллокатор завернуть тоже