@ProCxx

Страница 1082 из 2477
Golodnyi
13.07.2017
03:52:19
у них return нельзя же...

а или void * в сях значит что возвращает ссылку, без привязки к типу?

фишка в том как бы, что flex это по сути сокет сервер, там вечный цикл, который принимает соединения, я там return даже не могу использовать, чтоб не оборвать сокет

zk
13.07.2017
03:53:53
не ссылку, а указатель

Google
Golodnyi
13.07.2017
03:55:09
задумка изначально была, чтоб я давал flex область памяти, он писал туда инфу и в любом другом месте я мог бы по этой области памяти получать то, что flex туда записал

zk
13.07.2017
03:56:09
ты распечатываешь адреса, что ты отправляешь в вывод?

кидай код куда-нибудь

Golodnyi
13.07.2017
03:57:07
не очень понял вопроса, но vector это массив с данными из сокета, мне надо в другом потоке отрисовать эти данные в таблице

грубо говоря у меня так, есть main.cpp который создает vector<char> temp_vector; создаю 2 потока int result = pthread_create(&thread, NULL, flex, &temp_vector); if (result != 0) { perror("Создание первого потока!"); return EXIT_FAILURE; } pthread_t thread2; int result2 = pthread_create(&thread2, NULL, draw, &temp_vector); if (result2 != 0) { perror("Создание второго потока!"); return EXIT_FAILURE; } передаю туда &temp_vector, хочу чтоб поток с функцией flex писал в temp_vector и эти значения я мог иметь в main.cpp, соответственно функция draw чтоб тоже получала доступ к temp_vector и могла отрисовать его содержимое

я могу дать код, но там много мусора по реализации протокола будет, вся суть как бы в предыдущем сообщении

функции flex и draw вообще не имеют return в себе

суть же понятна задумки? чтоб 2 потока работали с одной областью памяти, как этого добиться?

Golodnyi
13.07.2017
04:18:50
while (true) { cout << &temp_vector << endl; usleep(1000000); } это в draw

zk
13.07.2017
04:18:55
ты что, адрес функций берешь?

Golodnyi
13.07.2017
04:19:27
почему функций? temp_vector это же то, что я передаю в поток по ссылке, через &

Google
zk
13.07.2017
04:20:03
это до предыдущего сообщения было

Golodnyi
13.07.2017
04:20:43
& - убери
если я уберу &, то я попытаюсь распечатать целый вектор в консоль, что как то невыполнимо, не?

или ты про какое место?

zk
13.07.2017
04:20:59
&temp_vector это адрес указателя

Golodnyi
13.07.2017
04:21:42
угу, на сколько я понимаю, моя цель чтоб адрес был одинаковый в main.cpp, в функции flex и в функции draw

zk
13.07.2017
04:21:50
temp_vector => vector *const

Golodnyi
13.07.2017
04:23:29
в main.cpp vector<char> temp_vector; в flex() vector<char> *const temp_vector = (vector<char> *)arg; в draw() vector<char> *const temp_vector = (vector<char> *)arg;

передача из main,cpp в поток, в функцию flex() pthread_create(&thread, NULL, flex, &temp_vector);

Golodnyi
13.07.2017
04:24:35
нет, все будет ок
ты хочешь так? while (true) { cout << temp_vector << endl; usleep(1000000); }

zk
13.07.2017
04:24:47
да

это будет адрес вектора

Golodnyi
13.07.2017
04:26:10
Flex: 0x7ffc87662ed0 Draw: 0x7ffc87662ed0

Flex size: 31 Flex address: 0x7ffef0da16d0 Draw size: 0 Draw address: 0x7ffef0da16d0

адрес вроде один, а данные разные...

zk
13.07.2017
04:29:15
будешь так кодть - будешь голодным давай код где вывод делаешь

Golodnyi
13.07.2017
04:29:39
while (true) { cout << "Draw size: " << temp_vector->size() << endl; cout << "Draw address: " << temp_vector << endl; usleep(1000000); }

си просто не мое)

это в draw

в flex в конце цикла приема данных cout << "Flex size: " << temp_vector->size() << endl; cout << "Flex address: " << temp_vector << endl;

Google
zk
13.07.2017
04:36:36
видимо draw быстрей отрабатывает чем flex

Golodnyi
13.07.2017
04:37:16
тоесть по этой теории если я подожду минуту, драв покажет размер?



zk
13.07.2017
04:38:06
отладчик не завезли?

Golodnyi
13.07.2017
04:38:17
могу отладчиком

просто потоки брякпоинтами как то сложнее, много шагов

zk
13.07.2017
04:42:09
кидай код на pastebin.com

Golodnyi
13.07.2017
04:42:52
давай я тебе репу расшарю? Код вообще студент пишет, я си не знаю, но так, саппортю его немного

zk
13.07.2017
04:43:10
ок

Golodnyi
13.07.2017
04:43:57
ок
дай битбакет почту или логин

zk
13.07.2017
04:45:56
жди

Golodnyi
13.07.2017
04:46:41
за говнокод не пугайся, я от прототипа студента красоты и ООП не прошу) и код линуксовый, надеюсь он у тебя есть, если хочешь его запускать

zk
13.07.2017
04:47:44
VERBiSDiablo

Golodnyi
13.07.2017
04:48:30
расшарил https://bitbucket.org/getpart/gui-raspberry

доктор, что с ним?

zk
13.07.2017
05:07:02
хз пока, функция на 440 строк - это полный пиздец пойду сперва чай попью

Golodnyi
13.07.2017
05:07:23
ну когда прототип заработает, перепишу на ооп

но тебе по сути интересно только отслеживать temp_vector, потому что детали реализации бинарного протокола тут к проблеме отношения не имеют, протокол работает нормально, хотя реализацию тоже надо переделывать

Sergey
13.07.2017
05:36:46
Кто то сталкивался с ИИ? Пробовал обучать?

Golodnyi
13.07.2017
05:37:41
свой бы обучить хотя бы

Google
Golodnyi
13.07.2017
05:55:47
лол я нашел ошибку)

ой не туда

а не, туда

@hexenhammer короче проблема в цикле for(;;) туда программа всегда заходит и там вектор очищается, переписал на while(accept) теперь в цикл входит только если соединение принято)

zk
13.07.2017
05:57:53
видел тот момент, но там вроде не все так просто

Golodnyi
13.07.2017
06:03:09
видел тот момент, но там вроде не все так просто
ну щя у меня размер векторов совпадает в 2-х потоках

отправил студента вывести содержимое вектора в таблице, посмотрим

но блин, я вчера пол дня потратил на эту багу и сейчас у меня уже 13 часов) считай целый рабочий день потратил на то, что переменная очищается не там где надо)

Admin
ERROR: S client not available

zk
13.07.2017
06:09:07
не, это я протупил, бряк в 304 строке не увидел и отчего-то думал что после вывода цикл завершается, а за ним и функция, а .clear()-то выше. Но вот только цикл завершается в 304 строке, так-что все вроде норм.

Golodnyi
13.07.2017
06:10:31
там вложенный цикл завершается

этот основной цикл никогда не завершается, отсюда нужда в отдельном потоке

есть еще вопрос, понадобится в будущем, ссори что я к вам, вместо доки) в сях можно массив из структур как до сериализовать в файл и назад десириализовать в массив структур? Что то мне подсказывает что в плюсах так нельзя, но мало ли?

ну под сями я плюсы подрузамиваю

Dmitriy
13.07.2017
06:36:27
cout? ?
А потом приносишь это мракобесие на машину с другим порядком байт и ловишь множество вкусняшек.

есть еще вопрос, понадобится в будущем, ссори что я к вам, вместо доки) в сях можно массив из структур как до сериализовать в файл и назад десириализовать в массив структур? Что то мне подсказывает что в плюсах так нельзя, но мало ли?
http://www.boost.org/doc/libs/1_64_0/libs/serialization/doc/index.html можешь сюда посмотреть, если из готового. Не самая быстрая штука на моей памяти, но пару раз использовал и пока не подводила.

там конечно своих подводных камней хватает. Зато самому много писать не надо ) А если по быстрому и по наглому, то переопредели просто у структур операторы ввода в поток и вывода из него (или перегрузи соответствующие функции) и плюй в файлик.

Pepe
13.07.2017
06:45:08
При установке llvm ошибка что не может найти директорию. Я подозреваю что из-за пробела. Как поменять директорию ибо cmake.install файлов с неправильной директорией там десятки?

Google
Dmitriy
13.07.2017
06:47:49
Protobuf или flatbuffers можно заюзать
тоже как вариант, но protobuf как-то не очень экономно бинарную сериализацию проводит, как по мне. можно и компактнее было бы )

Pavel
13.07.2017
06:48:56
тоже как вариант, но protobuf как-то не очень экономно бинарную сериализацию проводит, как по мне. можно и компактнее было бы )
Ну там реализаций много, можно сишную заюзать, по зависимостям пару файлов выходит как у flatbuffers

Dmitriy
13.07.2017
06:50:58
Ну там реализаций много, можно сишную заюзать, по зависимостям пару файлов выходит как у flatbuffers
Я немного не корректно выразился. Конечный результат сериализации не всегда минимален. Но это если уже прикапываться. Совсем универсальный инструмент не написать )

Pepe
13.07.2017
07:19:00
Может кто то знает что такое -P в опциях cmake_install_prefix?

И как сделать для дебага чтобы конфигурацию поменять?

А доках по симейк на этот счёт ничего нет

Pavel
13.07.2017
07:20:21
Pepe
13.07.2017
07:20:54
Майбе это -DCMAKE_BUILD_TYPE=Debug
Да но мне для него надо поменять путь. То есть уже все сбилдилось

Я меняю префикс но почему то cmake_install.cmake все равно хранит дефолтный

Pavel
13.07.2017
07:22:49
Кеш чистил?

/dev
13.07.2017
07:23:45
А доках по симейк на этот счёт ничего нет
У симейка код написан лучше, чем доки

Pepe
13.07.2017
07:24:14
Кэш не чистил сейчас попробую

Кэш не знаю как почистить удалил все записи из кэша теперь ошибка

Pavel
13.07.2017
07:30:58
В новой папке запусти смейк

Pepe
13.07.2017
07:34:09
В новой папке запусти смейк
Я из кэша уже выпилил это все равно проблема

Та же

Волчик
13.07.2017
07:45:23
никто не хочет пописать на пхп?

"пописать" не в смысле обоссать

Страница 1082 из 2477