Size: a a a

2020 May 31

S

Sebor in Go-go!
Captain Jack Vielfrass
Добрый вечер. Кто нибудь программирует на го под windows?  я не понимаю.
Я написал многопоточный загрузчик файлов. Он делит файл на несколько частей, скачивает каждую часть в отдельный файл.  Когда все части скачались, они склеиваются в один целый файл, а части удаляются.
Провожу тесты. Под линуксом никаких ошибок нет, весь алгоритм работает нормально.
а в windows ошибка то появляется то работает нормально. на стадии удаления частей появляется ошибка "the process cannot access the file because it is being used by another process". Это какой то процесс винды не дает удалять или как найти ошибку?
https://github.com/mallvielfrass/GoDloader/blob/master/example/main.go
так может ты сам себя и блочишь? винда в этом плане построже линукса (в линуксе ты можешь "удалить" файл, даже если он используется другим процессом. дискриптор, понятное дело, будет открыт)
источник

CV

Captain Jack Vielfra... in Go-go!
Sebor
так может ты сам себя и блочишь? винда в этом плане построже линукса (в линуксе ты можешь "удалить" файл, даже если он используется другим процессом. дискриптор, понятное дело, будет открыт)
Я вроде всегда закрываю файл после работы с ним.  Так что не должен блокироваться
источник

CV

Captain Jack Vielfra... in Go-go!
Constantine
как по мне — в целом опасные манипуляции ) даже банальную проверку хешсуммы, что файл не битый не сделать
А при обычном скачивании wget'ом тож не проверить. Но обычно на ресурсах дается хеш, так что потом руками можно сравнить
источник

S

Sebor in Go-go!
Captain Jack Vielfrass
Я вроде всегда закрываю файл после работы с ним.  Так что не должен блокироваться
то есть у тебя каждая часть отдельным процессом скачивается?
источник

CV

Captain Jack Vielfra... in Go-go!
Sebor
то есть у тебя каждая часть отдельным процессом скачивается?
Да
источник

S

Sebor in Go-go!
а может рейс какой?
источник

CV

Captain Jack Vielfra... in Go-go!
Sebor
а может рейс какой?
Извините, не понял. Рейс?
источник

S

Sebor in Go-go!
гонка
источник

S

Sebor in Go-go!
прогони рейс детектор
источник

CV

Captain Jack Vielfra... in Go-go!
По идее, если бы потоки не завершились, то конечный целый файл бы не собрался. А он собирается 🤔
источник

CV

Captain Jack Vielfra... in Go-go!
Блин. Я хеш не проверил при исходе с ошибкой
источник

C

Constantine in Go-go!
Captain Jack Vielfrass
А при обычном скачивании wget'ом тож не проверить. Но обычно на ресурсах дается хеш, так что потом руками можно сравнить
обычный wget длину файла сверяет, я думаю, у тебя хоть какая-то проверка есть?)
источник

CV

Captain Jack Vielfra... in Go-go!
Constantine
обычный wget длину файла сверяет, я думаю, у тебя хоть какая-то проверка есть?)
Пока нет, но прикручу
источник

C

Constantine in Go-go!
а так, пробуй больше логов фигачить, может ты сам где-то не закрываешь работу с файлом
источник

CV

Captain Jack Vielfra... in Go-go!
Спасибо. Попробую
источник

CV

Captain Jack Vielfra... in Go-go!
Constantine
обычный wget длину файла сверяет, я думаю, у тебя хоть какая-то проверка есть?)
Да. Вы правы. Надо было проверку делать. Он файл криво склеивает.  Весит 2.8МБ, а должен 126.9🤔
источник

МП

Мимо Проходящий... in Go-go!
Captain Jack Vielfrass
Добрый вечер. Кто нибудь программирует на го под windows?  я не понимаю.
Я написал многопоточный загрузчик файлов. Он делит файл на несколько частей, скачивает каждую часть в отдельный файл.  Когда все части скачались, они склеиваются в один целый файл, а части удаляются.
Провожу тесты. Под линуксом никаких ошибок нет, весь алгоритм работает нормально.
а в windows ошибка то появляется то работает нормально. на стадии удаления частей появляется ошибка "the process cannot access the file because it is being used by another process". Это какой то процесс винды не дает удалять или как найти ошибку?
https://github.com/mallvielfrass/GoDloader/blob/master/example/main.go
горутина 1 лезет в файл, который был открыт и не был закрыт в горутине 2 ?
источник

CV

Captain Jack Vielfra... in Go-go!
Мимо Проходящий
горутина 1 лезет в файл, который был открыт и не был закрыт в горутине 2 ?
https://github.com/mallvielfrass/GoDloader/blob/master/Get.go#L101
defer file.Close()
А еще каждая горутина создает новый файл.  Так что они не должны затрагиваться.
источник

CV

Captain Jack Vielfra... in Go-go!
Спасибо всем за помощь. Я понял что мой код ужасен, и его полностью надо переписывать.
источник
2020 June 01

N

Nikolay in Go-go!
наверняка уже было, но на всякий случай - академическая статья про реализацию дженериков https://arxiv.org/pdf/2005.11710v1.pdf
источник