Daniel
а?!
Władimir (Zae)
golang graceful shutdown
это рестартит сам процесс или систему?
Aleksandr
это рестартит сам процесс или систему?
приложение. а ты ребутишь систему?
Władimir (Zae)
да
Je
this is sparta, а flush-то ты дождался минимально при записи в файл или нет?
Cat
так ты ребутаешь после того, как записываешь?
Aleksandr
да
ребутишь в приложении?:
Cat
this is sparta, а flush-то ты дождался минимально при записи в файл или нет?
по идее система сама должна флашнуть до выключения, как минимум если это ext4
Je
по идее система сама должна флашнуть до выключения, как минимум если это ext4
кому должна? он сискол шлет, ты точно уверен, как он внутри отрабатывает?
Cat
конеш, если линукс
Cat
> кому должна? системе должна
Cat
это же не отключение электричества
Władimir (Zae)
так ты ребутаешь после того, как записываешь?
да, через 1.5 сек, но примененные настройки все равно не сохраняются
Cat
так это
Cat
может не по таймеру будешь ребутать всё-таки?
Władimir (Zae)
а как узнать что настройки записались?
Cat
(тут к специалистам по го и flush в нём)
Je
> кому должна? системе должна
а здесь чото на половину сисколов reboot даже пишут, что нет sync, уже не должна получается http://man7.org/linux/man-pages/man2/reboot.2.html
Aleksandr
да
ну так может ты просто файл не закрываешь до ребута. пришел сигнал на ребут, пробежался по всем процессам, все закрыл, затем кинул сигнал системе на ребут
Aleksandr
Władimir (Zae)
а если файла нет?
Cat
а если файла нет?
на всякий случай глянь вот это http://man7.org/linux/man-pages/man2/reboot.2.html http://man7.org/linux/man-pages/man2/sync.2.html
Aleksandr
Andrey
Aliaksandr привет) а подскажи пожалуйста, я ошибаюсь, или в новой версии fasthttp QueryArgs стало возвращаться urldecoded а раньше не было? Мне кажется, раньше в значениях GET параметров + в %20 не превращался. Ну или меня подглючивает) А то тут сломалось у меня чутка
Fastumkruk
go send_ Что означает _ ?
Daniel
ничего
Daniel
имя такое
Fastumkruk
Хорошо
Fastumkruk
for i := 0; i < 5; i++ { if key != "NULL" { go send_(users[i].key) } } Запустит функцию send() пять раз, т.е. он должен сразу 5 функций запустить. Что может тормозить функцию и заставлять ее ждать заврешение пердыдщуего вызова функции?
Cat
а мапы уже рутино-безопасные стали?
Fastumkruk
уберите go и будет так как вы хотите
go разве не та команда которая разрешает делать все многопоточно?
Sergei
go разве не та команда которая разрешает делать все многопоточно?
да. но вы же сами хотите чтобы у вас было синхронно.
Cat
syncmap
и к ней можно обращаться через users[i]?
Sergei
и к ней можно обращаться через users[i]?
это троллинг? нет конечно.
Fastumkruk
да. но вы же сами хотите чтобы у вас было синхронно.
Я написал, что с go, функция как раз работает как без go, ждает завершение предыдущего вызова.
Cat
это троллинг? нет конечно.
ну так я об этом и говорю
Cat
нельзя так делать как минимум
Sergei
Я написал, что с go, функция как раз работает как без go, ждает завершение предыдущего вызова.
смотрите в имплементацию, может быть они лочатся друг об друга, поэтому вам кажется, что они работают однопоточно.
Fastumkruk
Sergei
Как можно например?
мьютекс на мапу или использовать syncmap
Cat
for i := 0; i < 5; i++ { if key != "NULL" { go send_(users[i].key) } } Запустит функцию send() пять раз, т.е. он должен сразу 5 функций запустить. Что может тормозить функцию и заставлять ее ждать заврешение пердыдщуего вызова функции?
> Что может тормозить функцию и заставлять ее ждать заврешение пердыдщуего вызова функции? а как вы определяете, что они ждут завершения?
Cat
но это не завершение
Cat
мб они внутри доступаются к ресурсу, который долго высчитывается
Fastumkruk
но это не завершение
Согласен. Но с виду как буд то заврешение
Cat
так проверьте на завершение)
Cat
google for WaitGroup
Fastumkruk
так проверьте на завершение)
В конце функции идет принт, что отправка на сервер и время. Разве могут 5 запросов выполняться почти 10 секунд в многопоточности?
Cat
во-1х, это не обязательно многопоточность
Denis
причем тут многопоточность вообще?)
Cat
во-2х, без кода send_() практически не возможно сказать
Cat
мб они внутри доступаются к ресурсу, который долго высчитывается
Denis
for i := 0; i < 5; i++ { if key != "NULL" { go send_(users[i].key) } } fmt.Println("я здесь а функции send может еще работают")
Fastumkruk
во-2х, без кода send_() практически не возможно сказать
Два запроса по сокетам, на авторизация и отправку ключа.
Cat
ничего не прояснило
Cat
мб у вас httpclient синхронный? откуда я знаю
Denis
Есть такой принт. Суть не меняется
в смысле не меняется? принт появляется после 10ти секунд?
Denis
как все sendы отработали?
Denis
он должен появится мгновенно и никто никого ждать не должен
Denis
а почему 10 секунд работают ваши запросы - надо смотреть _send. может у тебя там time.Sleep( 10 * time.Second) написано
Cat
короче, спойлер в го нет способа без waitgroup дождаться конца рутины (или мб черз каналы, но сути не меняет)
Fastumkruk
в смысле не меняется? принт появляется после 10ти секунд?
Такой принт выход сразу, т.е. он ставит сразу 5 send() на выполнение, меньше чем за секунду.
Denis
ну, все правильно, а чего говоришь что синхронно-то работает?
Fastumkruk
ну, все правильно, а чего говоришь что синхронно-то работает?
Да, ве верно. НО. Все же в логах отправки запросов приходит все поочередно до 10 секунд
Denis
так покажи нам send_, что там написано? как сказал человек выше, наверняка лочат друг друга
Cat
короче, спойлер 2: замени send_() на println, если не так же долго, значит проблема в send и мы занимается гаданием на кофе
Denis
так очевидно проблема в send_ :)
Cat
ну а чего мы хренью страдаем
Cat
— "покажи send()" — "send написан правильно" — ...