Vladislav
Корея неожиданно сильна
Vladislav
Аж две команды в топ10
Sheridan
Други, чем черевато
void func()
{
std::thread thrd(&CSession::alertIncoming, this);
thrd.detach();
}
Sheridan
?
Berkus
тем что this будет удален когда-нибудь
Berkus
например задолго до того как тред вызовет alertIncoming()
Berkus
shared_from_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
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) { ... }
Anton
Vladislav
загадка: почему вот этот код сегфолтится? (с -mavx2 и -O3, как минимум) Бонусные очки за способ исправить
vector<__m256i> v;
for (int i = 0; i < 100; ++i) {
v.emplace_back();
}
Stanislav
Stanislav
а где аргумент в emplace_back ?
Vladislav
Vladislav
у emplace_back (Args&&...) аргументы
Stanislav
а __m256i для не знающих это что? )
Stanislav
понятно что 256 битный инт
Stanislav
гцц авх интегер ?
Vladislav
это векторный тип, может содержать 32 x uint8_t, 16 x uint16_t или 8 x uint32_t
Stanislav
Vladislav
Stanislav
точнее vector<__m256i> v(100);
Stanislav
хм
Stanislav
Vladislav
да)
Stanislav
да прост тут билдили онду херню с полной оптимизацией fpu, на старых процах где такого не было тоже падало )
Stanislav
уточняю
Stanislav
надо подумать тогда лол
Vladislav
это да
Vladislav
но тут не этот случай)
Stanislav
c выравниванием косяк?
Vladislav
Stanislav
ну как поправить я точно хз, у гцц не помню как директивы для выравнивания работают
Vladislav
директивы для __m256i нужные проставлены в либе, как я понимаю, но это не поможет
Vladislav
я правда не совсем понимаю, зачем компилятор вообще гоняет данные через регистры тут - сегфолт происходит только в момент загрузки unaligned значения в регистр
Stanislav
а, т.е. ты сам еще не разобрался ? :)
Vladislav
я разобрался что проблема с выравниванием и как починить, но почему конкретно компилятор натыкается на эту проблему при простом перекидывании данных туда-сюда в памяти - непонятно :)
Stanislav
рассказывай давай )
Stanislav
кастомный аллокатор ? )
Vladislav
стандартный аллокатор выравнивает только по sizeof(align_t), который на моей машине 16
Vladislav
если вместо него воткнуть boost::alignment::aligned_allocator<__m256i> то все работает корректно)
Stanislav
Vladislav
в принципе, свой аналогичный аллокатор написать тоже несложно
Vladislav
благо есть std::align и (местами) posix_memalign
Stanislav
Vladislav
и да, это первый раз когда мне в работе пригодился кастомный аллокатор)
Vladislav
Alexander
Можно выделить на страницу больше и положить метадату в конец (типа оригинальный поинтер) и руками выровнять
Vladislav
внутри буста пачка #ifdef'ов на десяток разных случаев
Vladislav
Stanislav
пжди
Stanislav
http://en.cppreference.com/w/c/memory/aligned_alloc
Stanislav
а это?
Vladislav
Stanislav
а тьфу
Stanislav
там же вектор
Alexander