Aidar
нужно сделать тип типа variant
Aidar
и его хранить
Igor
?
Aidar
потомучто иначе передача не того компаратора это потенциальное место для багов
🐙 Antony
Aidar
надо custom_less<Types...>
Aidar
is_transparent тоже определить
Aidar
или может
set<comparable_with<Type, string>, std::less<>>
🐙 Antony
Alexander "SonnySlave"
Anonymous
Пытаюсь собрать модуль для python на C++
При компиляции появляется ошибка
/usr/include/boost/python/detail/wrap_python.hpp:50:11: fatal error: pyconfig.h: Нет такого файла или каталога
# include <pyconfig.h>
^~~~~~~~~~~~
compilation terminated.
CMakeFiles/API.dir/build.make:86: recipe for target 'CMakeFiles/API.dir/Backend.cpp.o' failed
Anonymous
Версия python - 3.6.5
Anonymous
Сам файл pyconfig.h есть и лежит в директории /usr/include/python3.6/pyconfig.h
Ostap ꑭ
Anonymous
Ostap ꑭ
include_directory("/usr/include/python3.6/")
Anonymous
Ostap ꑭ
Ой
Ostap ꑭ
include_directories
Anonymous
Как добавить флаги
-lboost_python -lboost_system
?
Sergey
target_link_libraries
Anonymous
target_link_libraries
Cannot specify link libraries for target "boost_python" which is not built
by this project.
Anonymous
Странно, не может найти boost python
Anonymous
target_link_libraries("boost_python", "boost_system")
Aidar
юзай find boost какойнибудь
Aidar
эм
Aidar
ты таргетом указал буст пайтон
Aidar
а таргет это твой таргет
Anonymous
Boost version: 1.65.1
-- Found the following Boost libraries:
-- filesystem
-- thread
-- unit_test_framework
-- system
-- graph
-- regex
-- python
-- chrono
-- date_time
-- atomic
CMake Error at CMakeLists.txt:4 (target_link_libraries):
Cannot specify link libraries for target "boost_python," which is not built
by this project.
🐙 Antony
Anonymous
Короче, я переписываю Cheat Engine на линукс, потому что потому, так вот, у меня проблемес. Вот я сделал снепшот процесса, теперь задача найти значения. У меня это получилось, но CE использует многопоточность. Собсна я немного затупил: я должен сделать mmap этого снепшот-файла, далее создать 8 потоков, для каждого потока свой оффсет этого mmap и свой файл для записи. И вопрос: ничего страшного не будет, если mmap будет читаться не последовательно, как при одном потоке, а перепрыгивая c 0 оффсета файла на snapshot.size()/8*1, в третьем потоке с snapshot.size()/8*2 и тд... Или же что-то другое сделать? Типа читаю первые 8 единиц информации, каждую из них фижу в потоки (что бы не было никаких задержек, например, у пользователей с HDD)
Anonymous
Тупо скажите что гуглить. Thread pool это и есть то, что я хочу? Или ограничиться массивом из 8 потоков?
Vitaly
А у тебя этот снепшот на диск пишется? Или в оперативе лежит? Если в оперативе, то лучше первый вариант. И тред пул тут не нужен по идее, если ты хочешь сначала обработать на разных потоках а потом резы в одном выводить
Aidar
тогда я не понял причем тут хдд
Vladislav
Vitaly
Не понятно куда снапшот сохраняется
Aidar
ну короче если он работает с хдд у него лагает изза хдд
Aidar
и потоки не помогут
Anonymous
Anonymous
Vitaly
mmap вроде должен замапленный файл в рам загружать
Vitaly
хотя бы часть, к которой чтение идёт
Anonymous
Vitaly
Ну, ленивое то есть?
Vitaly
А какой размер снапшота, примерно?
Anonymous
Обычно от 1 до 5 гб, в зависимости от игры/приложения
Vitaly
можно кароче делить не на количество потоков, а на размер страниц и ассинхронно страницы обрабатывать
Aidar
на количество*
Vitaly
Aidar
делай количество потоков равным hardware_concurency зачем больше
Vitaly
+
Aidar
и мапай настолько большими кусками насколько возможно
Aidar
причем ты должен знать размер куска
Anonymous
Короче, я планирую тупо 4 МБ на поток, следовательно читаю в буфер 4*hardware_concurency МБ, далее в каждый поток как-то фижу этот буфер. Но как?
Anonymous
Я не знаю, как реализовать это, я в мультипоточности новичок
Aidar
юзай std::async тогда
Vitaly
тебе на си?
Aidar
там все просто
Vitaly
гугли про семафор, он тут как раз нужен
Aidar
да вроде не нужно ничего
Vitaly
а, ну да, асинком лучше
Anonymous
Aidar
это совершенно точно не конкурентная задача, конкуренция тут только за пейджинг
Dmitry
Приветствую!
Пытаюсь осмыслить перегрузки для delete из п.17.6.4.6
Определил nothrow перегрузку для new и ожидаю(верно ли?), что надо бы определить такую же перегрузку для delete.
Но получил ошибку компиляции:
test.cpp:21:5: error: no suitable member 'operator delete' in 'Foo'
delete f1;
^
test.cpp:11:10: note: member 'operator delete' declared here
void operator delete(void *pVoid, const std::nothrow_t &tag) {
#include <new>
#include <memory>
class Foo {
int m;
public:
void *operator new(std::size_t sz, const std::nothrow_t &tag) {
return std::malloc(sz);
}
// nothrow new fails to link with this delete
void operator delete(void *pVoid, const std::nothrow_t &tag) {
std::free(pVoid);
}
// works with this one
// void operator delete(void *pVoid) {
// std::free(pVoid);
// }
};
int main(){
auto f1 = new (std::nothrow_t{}) Foo;
delete f1;
//delete (std::nothrow_t{}) f1; // syntactically incorrect?
}
Anonymous
delete вызывает деконструктор же, не?
Dmitry
да
Dmitry
понятно, что он не кидает исключений, но зачем тогда перегрузка с std::nothrow_t параметром
Aidar
они поидее все не должны ничего бросать вроде
Dmitry
может компилятор не ту версию берет
Aidar
он берет ту которая без nothrow
Dmitry
использовал clang version 5.0.1 (tags/RELEASE_501/final)
Dmitry
Видимо Вы меня не правильно поняли: все delete помечены как noexcept ( смотрите тут https://github.com/llvm-mirror/libcxx/blob/master/src/new.cpp ), с выбором конкретной перегрузки проблема
Aidar
вы не можете флажками в new делать разное поведение
Aidar
и delete
Aidar
принципиально
Aidar
потомучто delete nothrow вызывается как там написано при падении конструктора в new nothrow
Aidar
и delete с тегом при падении конструктора в new с тегом