Просмотр сообщений
|
Страниц: 1 ... 3 4 [5] 6 7 ... 217
|
65
|
Qt / Установка, сборка, отладка, тестирование / Re: Какой компилятор у Qt5.12 и новее в Windows?
|
: Март 17, 2021, 21:41
|
шланг в венде тоже есть - поддерживает 2 ABI на выбор - мингвшный и родной от MSVC. есть даже обертка clang-cl которая эмулирует вендовый компилятор что позволяет его бесшовно юзать из разных систем сборки (система сборки думает что дергает "официальный" компилер). на счет production ready не знаю, но код собирается и работает, выдает больше ворнингов чем мулкомягкий компилер также есть какие-то санитайзеры
|
|
|
68
|
Qt / Многопоточное программирование, процессы / Re: Thread tried to wait on itself
|
: Март 15, 2021, 14:34
|
Спасибо за напоминание, что "хэндл" живет в потоке, в котором он создан)) Но откуда следует, что остановить поток (quit) можно только из того потока, откуда он был запущен?
Ни откуда, quit() можно звать из любого потока. Нельзя звать wait() из потока потому что, по сути, wait() - это join() - вы ждете когда две нитки сольются в одну (ту, которая вызвала wait()/join()). Как нитка может поджойнится сама с собой?
|
|
|
69
|
Qt / Многопоточное программирование, процессы / Re: Thread tried to wait on itself
|
: Март 15, 2021, 13:31
|
Но в чем принципиальная ошибочность моего кода?
Так у вас телега впереди лошади. QThread - это объект-хэндл треда, а не сам тред (сам тред - это то, что в run()). Хэндл нужен для управления тредом из родительского (часто главного) треда - родительский поток запускает новый поток, он же его останавливает и дожидается. А так у вас получается что владелец потока (объект Worker) перемещен внутрь этого потока, а тред не может заджойнить сам себя.
|
|
|
70
|
Qt / Многопоточное программирование, процессы / Re: Не масштабится :-(
|
: Март 12, 2021, 22:52
|
А можно поподробнее в сторону векторных операций? (сам просто сейчас занимаюсь вычислениями собственных значений и собственных векторов)
Ну я не настоящий сварщик, но кажется что вот этот кусок for (size_t j = 0; j < mNumVerPerFace; ++j) dst[mNorIndex[i + j]] += faces[ i / mNumVerPerFace ];
можно делать векторно сразу чанками. другое дело что там как я понимаю даблы, а в регистр влезает только 2 дабла, так что с 4кратным ускорением я погорячился, кол-во операций только вдвое сократиться
|
|
|
71
|
Qt / Многопоточное программирование, процессы / Re: Не масштабится :-(
|
: Март 12, 2021, 11:54
|
Что функция рассчетов то делает? Может она весь кэш процессора вышибает? Есть тулзы (по памяти не скажу) которые профилируют промахи кэша. Может размер итерации не подогнан под размер кэшей? Ещё подумать в сторону векторных операций, раза в 4 могут ускорить
|
|
|
73
|
Программирование / С/C++ / Re: Итераторы
|
: Февраль 01, 2021, 17:14
|
можно просто перегрузить функцию для ссылки и указателя без шаблонов=) void foo(Type &t) {...} void foo(Type *t) {foo(*t); }
|
|
|
75
|
Программирование / С/C++ / Re: Итераторные пары
|
: Январь 25, 2021, 16:39
|
ranges::find_if_not(v, is_even);
против ranges::find_if_not(v.begin(), v.end(), is_even);
я даже не знаю что короче что вам не нравится? итератор? ну напишите функцию, которая возвращает range (например, ленивый findAll), будете писать if (auto result = findAll(v, is_even); !ranges::empty(result)) { // do smth }
|
|
|
|
|