@proGO

Страница 556 из 1674
Alexey
21.03.2017
20:23:55
https://gobyexample.ru http://golang-book.ru
Огромное спасибо

FlaIDzeres
21.03.2017
20:25:23
Вопрос по многопоточности, что то на офсайте как то без конкретики. Горутины подкапотом через какой то внутренний пул работают? Или как то по другому ?

Maxim
21.03.2017
20:28:45
ПРИКРОЙТЕ ВОРОТА, НОВЫЕ ЗАРАЖЁННЫЕ ВЫСТУПАЮТ

Alex Фэils?︙
21.03.2017
20:29:29
"Запри эту чертову дверь!"

Google
Alexander
21.03.2017
20:29:30
Alexey
21.03.2017
20:30:08
Там надо долистать до слайда с горутинами только. Сначала про другое идёт.

FlaIDzeres
21.03.2017
20:31:38
Внутри есть свой "шедулер"
Как бы очевидно что он есть вопрос в подробностях, ссылками.

Alexander
21.03.2017
20:31:39
хех

FlaIDzeres
21.03.2017
20:33:14
Ну сорян, гугл в помощь :)
Гугл конечно вещь хорошая) но я так думаю тут есть специ которые могли бы из первых рук пояснить

Alexey
21.03.2017
20:34:17
Гугл конечно вещь хорошая) но я так думаю тут есть специ которые могли бы из первых рук пояснить
Я мог бы сказать своими словами, но пересказ статьи будет хуже, чем статья?

Alexander
21.03.2017
20:35:01
@flaidzeres https://docs.google.com/document/d/1TTj4T2JO42uD5ID9e89oa0sLKhJYD0Y_kqxDv3I3XMw лови

FlaIDzeres
21.03.2017
20:35:48
Благодарю

Хотя 2012, актуально ли

Google
FlaIDzeres
21.03.2017
20:36:36
Как ни как 2к17

Alexander
21.03.2017
20:36:57
ну по крайней мере это был драфт ) вроде как сейчас оно в языке

ну посмотри что меняли с 1.2 )

?

FlaIDzeres
21.03.2017
20:38:20
Проще тогда в исходниках посмотреть)

Но я вообще рассчитывал на быстрый ответ

Видимо знающих пока нет, или они спят

Roman
21.03.2017
20:40:02
Всем привет! Какую gui либу выбрать что бы потом не было мучительно больно?

(я знаю что многие не любят го на десктопе и иногда ругаются на это)

Alexander
21.03.2017
20:43:00
@flaidzeres особо не заморачивался просто

FlaIDzeres
21.03.2017
20:43:27
Maxim
21.03.2017
20:43:58
Всем привет! Какую gui либу выбрать что бы потом не было мучительно больно?
Наоборот все хотят гуи, но оно больно потому что нет простых решений или актуальных библиотек

Roman
21.03.2017
20:44:46
а shiny сильно сырая?

Maxim
21.03.2017
20:44:50
Вроде есть форк официальной, но умершей библы для гуя, но я хз

Так-то мне бы тоже не помешало, но всё что я щупал - работает. Но писать это всё - немного ректально

Alexander
21.03.2017
20:46:32
а shiny сильно сырая?
хз не пробовал https://github.com/avelino/awesome-go#gui тут список есть ) qt, gtk пробовал

Alexander
21.03.2017
20:52:34
что-то работал ) окно сделал и забил )

*что-что

Google
Maxim
21.03.2017
20:53:14
*что-что
Тут полгода как редактирование есть, бро. :В

Vladimir
21.03.2017
20:53:32
Но я вообще рассчитывал на быстрый ответ
Если быстро: Есть GOMAXPROC (число ядер по дефолту в новых версиях Go) worker тредов которые исполняют горутины. При вызове функции воркер тред может перехватить управление на себя, припарковать горутину, и начать выполнять следующую. Есть отдельно netpoller тред, который занимается горутинами, которые делают асинхронный io syscall (ходят в сеть, грубо говоря), и скидывает их в очередь исполнения, когда их асинхронный вызов завершается. Еще есть timer тред, который держит priority queue таймеров и будит горутины, когда приходит их время. Еще горутины делающие блокирующие системные вызовы или вызывают CGo сбрасываются в отдельные треды, т.к. нет гарантий что они не заблокируются, а если это произойдет в worker треде, то её будет ждать очередь в этом worker, что плохо. Собственно из за скидывания в отдельный поток у CGo большой overhead. Можно почитать https://morsmachine.dk/go-scheduler Поправьте, если я где-то не прав.

Alexander
21.03.2017
20:54:13
Тут полгода как редактирование есть, бро. :В
web версию как-то стороной прошло )

месяца 2 назад у меня не работает по крайней мере

Если быстро: Есть GOMAXPROC (число ядер по дефолту в новых версиях Go) worker тредов которые исполняют горутины. При вызове функции воркер тред может перехватить управление на себя, припарковать горутину, и начать выполнять следующую. Есть отдельно netpoller тред, который занимается горутинами, которые делают асинхронный io syscall (ходят в сеть, грубо говоря), и скидывает их в очередь исполнения, когда их асинхронный вызов завершается. Еще есть timer тред, который держит priority queue таймеров и будит горутины, когда приходит их время. Еще горутины делающие блокирующие системные вызовы или вызывают CGo сбрасываются в отдельные треды, т.к. нет гарантий что они не заблокируются, а если это произойдет в worker треде, то её будет ждать очередь в этом worker, что плохо. Собственно из за скидывания в отдельный поток у CGo большой overhead. Можно почитать https://morsmachine.dk/go-scheduler Поправьте, если я где-то не прав.
тоже самое что и сбрасывал я до этого )

Daniel
21.03.2017
20:55:51
о чем вы тут опять?

FlaIDzeres
21.03.2017
20:56:01
Если быстро: Есть GOMAXPROC (число ядер по дефолту в новых версиях Go) worker тредов которые исполняют горутины. При вызове функции воркер тред может перехватить управление на себя, припарковать горутину, и начать выполнять следующую. Есть отдельно netpoller тред, который занимается горутинами, которые делают асинхронный io syscall (ходят в сеть, грубо говоря), и скидывает их в очередь исполнения, когда их асинхронный вызов завершается. Еще есть timer тред, который держит priority queue таймеров и будит горутины, когда приходит их время. Еще горутины делающие блокирующие системные вызовы или вызывают CGo сбрасываются в отдельные треды, т.к. нет гарантий что они не заблокируются, а если это произойдет в worker треде, то её будет ждать очередь в этом worker, что плохо. Собственно из за скидывания в отдельный поток у CGo большой overhead. Можно почитать https://morsmachine.dk/go-scheduler Поправьте, если я где-то не прав.
Спасибо за развернутый ответ, я правильно понимаю что пулы статичны? До есть динамического расширения системных потоков нет?

Daniel
21.03.2017
20:57:22
нет, потому, что не нужно

Vladimir
21.03.2017
20:58:04
Спасибо за развернутый ответ, я правильно понимаю что пулы статичны? До есть динамического расширения системных потоков нет?
Число worker тредов не меняется: если делать больше чем ядер, то производительность будет падать. CGo треды пулятся и их число может расти.

Roman
21.03.2017
21:05:53
gx-ui, go-qml
go-ui - не нашел доков совсем, go-qml в альфе похоже у qt какие подводные? оно кросикомпиляцию сильно ломает?

которая https://github.com/therecipe/qt

Alexander
21.03.2017
21:07:34
из названия видно

кроскомпиляцию не пробовал ) по идее с qt проблем не должно быть )

с нативным гуём всё странно ) биндинги вроде есть к многим либкам )

Roman
21.03.2017
21:23:55
что то experemental пугвет возьму qt наверное спасибо!

Maxim
21.03.2017
21:30:36
https://github.com/google/gxui вот
Но есть вроде как пока ещё живой форк: https://github.com/nelsam/gxui

Oleksandr
21.03.2017
22:16:18
нет, потому, что не нужно
почему? в системе гораздо больше тредов, чем ядер

Google
Daniel
21.03.2017
22:16:54
Потому, что у нас есть горутины

Их может быть существенно больше, чем ядер и тредов

Oleksandr
21.03.2017
22:18:04
на сколько тредов оси мапятся горутины?

если это GOMAXPROC, то их как-то мало

Phil
21.03.2017
22:26:49
Почему мало?

Oleksandr
21.03.2017
22:31:14
при блокирующих операциях быстро забьются

ось их вытеснит

Admin
ERROR: S client not available

Phil
21.03.2017
22:32:20
при блокирующих операциях быстро забьются
а откуда возьмутся блокирующие операции?

Oleksandr
21.03.2017
22:33:27
а откуда возьмутся блокирующие операции?
например, запрос к бд без асинк драйвера

Phil
21.03.2017
22:33:51
например, запрос к бд без асинк драйвера
А откуда возьмется не асинк драйвер?

Oleksandr
21.03.2017
22:34:37
или если не написали :)

Phil
21.03.2017
22:35:15
если бд не умеет
а кого интересует, что там бд умеет?

или если не написали :)
а написали синхронный на go? ну ссзб

Oleksandr
21.03.2017
22:36:33
а кого интересует, что там бд умеет?
ну вот пошел запрос ответа нет, как и коллбека что делать?

Phil
21.03.2017
22:37:06
Не, можно for { i=1 } сделать и всё

Oleksandr
21.03.2017
22:38:09
Phil
21.03.2017
22:38:41
можно подробнее?
Бесконечный цикл в го может просто его заткнуть и он не выйдет

Google
Daniel
21.03.2017
22:38:45
Сетевой обмен в недрах рантайма асинхронный

Oleksandr
21.03.2017
22:38:46
кочего нет?
что-то, куда потом прийдет ответ

Phil
21.03.2017
22:39:31
что-то, куда потом прийдет ответ
такого физически не бывает. оно всегда есть

Daniel
21.03.2017
22:39:32
Этого достаточно для того, чтобы любой обмен с базой перестал быть блокирующим

Phil
21.03.2017
22:41:29
Этого достаточно для того, чтобы любой обмен с базой перестал быть блокирующим
Не, ну я могу себе представить написание блокируюего драйвера :)))))

Нет. Беру свои слова обратно - не могу

Alexey
21.03.2017
22:42:42
В Go вообще нет возможности синхронно сеть писать?

Всё, на свалку:)

Daniel
21.03.2017
22:43:05
А?

Oleksandr
21.03.2017
22:47:50
не, не клеится чтение файла с диска может быть 100% синхронным

Daniel
21.03.2017
22:50:21
Зачем?

Oleksandr
21.03.2017
22:51:20
ну вот просто, иначе нельзя

Daniel
21.03.2017
22:51:28
Это как?

Oleksandr
21.03.2017
22:52:22
это по одному треду оси на сисколл

Daniel
21.03.2017
22:52:22
Еще раз - io асинхронное в недрах go

Oleksandr
21.03.2017
22:52:42
поверю, что сетевое

Daniel
21.03.2017
22:52:54
И файловое

Oleksandr
21.03.2017
22:55:04
https://github.com/golang/go/issues/6817

ну не так это

Страница 556 из 1674