Название: Слот отработал раньше сигнала. Причинно-следственные связи? Отправлено: Vamireh от Март 12, 2014, 22:06 Снимаю данные с ком порта, как только накопилось нужное количество, высылается сигнал, что типа "все, хватит":
Код: if (QVector::size() == need) Этот сигнал соединен со слотом, который выключает устройство и сохраняет данные в файл. Пока отработает слот проходит какое-то время и обычно сохраняет на 100мс больше чем надо. Но, просматривая снятые файлы, случайно обнаружил, что в одном файле не хватает 100мс (одного пакета данных или одного элемента того QVector). Вот просто интересно, как это могло произойти? Проверка размера QVector - единственное место, где этот сигнал мог быть выслан и это единственное условие, т.е. QVector::size() все таки вернул need и сигнал выслан был. Просмотрел кучу файлов с парой сотен часов съема - только в одном файле такая штука. Или другой вариант: сохраняю в файл через qCompress, может тут что-то случилось... Сейчас весь съем данных идет с параллельно работающим PortMon, но сомневаюсь, что это повторится. Рабочая версия программы не менялась. Логов и всего остального - разумеется нет. Я, конечно, сомневаюсь что поймал страшный баг Windows/Qt/zlib, но и у себя проблем не вижу. Код приводить не вижу смысла, его там много и местами "для служебного пользования", логика тупа: если QVector::size() возвратил need, то послать сигнал слоту, который сохранит данные. Название: Re: Слот отработал раньше сигнала. Причинно-следственные связи? Отправлено: Vamireh от Март 12, 2014, 22:07 на 10 миллисекунд, то есть
Название: Re: Слот отработал раньше сигнала. Причинно-следственные связи? Отправлено: Swa от Март 12, 2014, 22:43 Вот вы звоните знакомому автомеханику и говорите, иногда я еду в машине и слышу звук такой "тыр-тыр-тыр" а потом "бум-бум", что у меня сломалось? Как вы думаете, что он вам ответит?
Гадать тут можно бесконечно. Название: Re: Слот отработал раньше сигнала. Причинно-следственные связи? Отправлено: Bepec от Март 12, 2014, 23:51 А ещё когда вы диплом защищаете, вы говорите "Ну я незнаю, я вот как то написал, но возможно наверно когда то ошибка разберитесь сами :D"
Больше фактов. И да, глюки бывают везде. У меня вон недавно условие value == -1 при value = 0 работало :D Название: Re: Слот отработал раньше сигнала. Причинно-следственные связи? Отправлено: Igors от Март 13, 2014, 11:19 Согласен с предыдущими докладчиками - вопрос задан совершенно безобразно.
Пока отработает слот проходит какое-то время и обычно сохраняет на 100мс больше чем надо. Что имеется ввиду? finished посылается через QueuedConnection на слот в др нитке? Тогда вектор должен быть защищен напр мутексом. |