"срабатывание точки останова" - это же не ошибка. Видимо надо убрать точку останова. Или просто запускать не в отладочном режиме.
Зачем вам посимвольная чтение/запись? Пишите/читайте сразу всю структуру с помощью fwrite/fread. Это и проще и быстрее.
Хочу напомнить, что любая операция с файлами может завершиться с ошибкой, по не зависящим от программы причинам. Так что в обязательном порядке нужно проверять возвращаемые функциями работы с файлами значение. Пожалуй, только возвращаемое значение fclose() можно игнорировать.
dmshar, Ну явно же - переход от 3 к 105
Возможно, это определит лишь область для более детального анализа.
Для дальнейшего анализа можно, например, от 105 проверить когда разность изменит знак, так выйдем на 107, это и будет окончательным пиком.
Ваш вариант, кстати, выявит все локальные максимумы (сглаженные размером окна), включая "ярко выраженные пики", а так же и не ярко выраженные.
Страуструп сложен, подойдет для тех кто уже в теме, но хочет поглубже нырнуть.
Прата подойдет. Лафоре из той же оперы.
После этого нужно что-то по глубже, по современным стандартам, по параллельному программированию и т.п.:
Скотт Мейерс "Эффективный и современный С++", это та где про 42 рекомендации
Энтони Уильяис "Параллельное программирование на С++ в действии"
...
Вообще провайдеры не гарантируют, что у вас будет заявленная скорость на ВЕСЬ интернет. Они могут обеспечить эту скорость только на "последней мили", т.е. от вас и до своего оборудования, а дальше - как получится.
Применительно к вашей проблеме - показателен опыт с принудительным ограничением скорости на сетевом адаптере. В связи с этим предполагаю, что это может быть глюк в GoogleDriveFS. Я не пользуюсь этим софтом, посмотрите, возможно где-то в настройках есть ограничения пропускной способности.
Похоже, если функция действительно вызывается в разных потоках, то она может долго ждать в этом цикле пока в timer снова появится значение oldTime.
Вообще, не понятно, если вы сохраняете предыдущее значение в локальную память потока, то зачем вам этот atomic нужен?
Иван Волков, Думаю, что ошибаетесь.
Компилятор может сделать какие-то мелкие оптимизирующие замены на уровне ассемблерного кода, не влияющие, по его мнению, на логику кода. Но заменить вызов функции на вызов другой функции - это было бы уже перебор.
Думаю, нет смысла отказываться от буферизации ради асинхронных операций. Тем более для последовательного чтения, где буферизация дает наибольший выигрыш в производительности.
В любом случае асинхронная операция может завершиться синхронно даже если вы выполнили все условия для того, что бы операция выполнялась асинхронно.
Кстати, наверное поэтому, в некоторых асинхронных библиотеках ввода/вывода асинхронность для файловых операций достигается за счет распараллеливания операций, а не за счет использования OVERLAPPED. По моему, такой подход используют в libuv.
Кирилл Гусарев, Кстати, если первый запуск с админскими правами был, то конкретные файлы, на которых спотыкается запуск, должны быть указаны в тексте ошибки.
Кирилл Гусарев, Когда QtCreator уже установлен, он должен работать без админских прав. Но ему требуются права на запись в каталоги где он лежит. Он там может создавать какие-то свои конфиги и временные файлы.
Так же, возможно, что если QtCreator уже был запущен из-под админа, то некоторые файлы в каталоге установки были созданы с админскими правами и пользователи не могут получить к ним доступа.
Просто дайте пользователям права на каталог c:\Qt и на все файлы внутри.
Удачи!
Кирилл Гусарев, Что скачивает с сервера? Профиль? У вас сетевой профиль? В принципе не страшно, он не скачивается с сервера, на сколько я знаю, а используется непосредственно на сервере.
Хотя я не настаиваю на установке в профиль. Ставьте хоть куда. Только определитесь сначала, чтоб в это место у вас были права на запись. Просто профиль - это как раз такое место по умолчанию.
А так как QtCreator у вас уже поставлен, пусть админ даст права на запись для всех на каталог c:\Qt
т.к. это сильно увеличит время ожидания входа в профиль
Вы не правы. Следуя вашей логике каждая фоточка или видосик в профиле должны увеличивать время входа.
А прикиньте на сколько увеличивает время входа кэш браузера, который может разрастаться до невероятных размеров.
На самом деле, время входа пользователя увеличивают программы, которые автоматически загружаются при регистрации пользователя. Так что ни фоточки, ни кэш браузера не увеличивают время входа. QtCreator то же не увеличивает, т.к. он по умолчанию не стартует автоматически, пока вы руками не добавите его в автозагрузку.
Кирилл Гусарев, Ставил QtCreator несколькими разными способами, часть из которых точно обходилась без админских прав. Например, установка пакетом из-под msys2+mingw - там точно админских прав не нужно. Еще один способ - собрать из исходников.
Ставил QtCreator штатным инсталлятором на Ubuntu в домашний каталог - админских прав не требовалось.
Про штатный инсталлятор QtCreator для винды точно не скажу, требует ли он админских прав или нет. Но думаю, что это не обязательно. Зависит от того, куда вы ставите (есть ли у пользователя доступ на запись в этот каталог) и нужно ли давать доступ другим пользователям.
Обычным пользователям может быть запрещено создавать каталоги в корне диска. Но не будет запрещено ставить QtCreator себе в профиль, например.
Ошибки при старте, видимо, связаны с тем, что каталог c:\Qt был создан админом, с админскими правами, а простым смертным туда доступ только на чтение. Просто пусть админ даст доступ на запись в этот каталог.
Через 3 месяца после чего?
Какая у вас версия винды?
Что написано в Source в первом скрине?
В дамп лезть бесполезно. Вы же все равно не станете исправлять ошибки в софте или что-то в этом роде.
Гуглите по Event ID, Source и названию ОС.
Возможно, есть другие, связаные сообщения в журнале, с типом Warning, в которых было бы больше информации, чем в ваших скриншотах.
Вообще есть смысл просмотреть все сообщения в журнале непосредственно перед перезагрузкой. Обычно момент перезагрузки по журналу легко определяется, т.к. при загрузке винда пишет в журнал соответствующие сообщения.
Написано, что аппаратная ошибка. Видимо какое-то устройство начало сбоить. Нужно понять что это за устройство и попробовать его отключить, если это возможно. Понаблюдать за системой с отключенным устройством.
Возможно сбоит не устройство, а драйвер. Может вы ставили какое-то свежее обновление с глючным драйвером и т.п.
Зачем вам посимвольная чтение/запись? Пишите/читайте сразу всю структуру с помощью fwrite/fread. Это и проще и быстрее.
Хочу напомнить, что любая операция с файлами может завершиться с ошибкой, по не зависящим от программы причинам. Так что в обязательном порядке нужно проверять возвращаемые функциями работы с файлами значение. Пожалуй, только возвращаемое значение fclose() можно игнорировать.