
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 потока работали с одной областью памяти, как этого добиться?


zk
13.07.2017
04:18:28

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);

zk
13.07.2017
04:24:15

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
отправил студента вывести содержимое вектора в таблице, посмотрим
но блин, я вчера пол дня потратил на эту багу и сейчас у меня уже 13 часов) считай целый рабочий день потратил на то, что переменная очищается не там где надо)

Admin
ERROR: S client not available

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

Golodnyi
13.07.2017
06:10:31
там вложенный цикл завершается
этот основной цикл никогда не завершается, отсюда нужда в отдельном потоке
есть еще вопрос, понадобится в будущем, ссори что я к вам, вместо доки)
в сях можно массив из структур как до сериализовать в файл и назад десириализовать в массив структур? Что то мне подсказывает что в плюсах так нельзя, но мало ли?
ну под сями я плюсы подрузамиваю

Evgeniy
13.07.2017
06:33:47

Dmitriy
13.07.2017
06:36:27
cout? ?
А потом приносишь это мракобесие на машину с другим порядком байт и ловишь множество вкусняшек.
там конечно своих подводных камней хватает. Зато самому много писать не надо ) А если по быстрому и по наглому, то переопредели просто у структур операторы ввода в поток и вывода из него (или перегрузи соответствующие функции) и плюй в файлик.


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

Pavel
13.07.2017
06:46:02

Google

Dmitriy
13.07.2017
06:47:49

Pavel
13.07.2017
06:48:56

Dmitriy
13.07.2017
06:50:58

Pepe
13.07.2017
07:04:50

Pavel
13.07.2017
07:11:33

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
Я меняю префикс но почему то cmake_install.cmake все равно хранит дефолтный

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

/dev
13.07.2017
07:23:45

Nik
13.07.2017
07:24:06

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
никто не хочет пописать на пхп?
"пописать" не в смысле обоссать