170 похожих чатов

Вопрос знатокам рантайма допустим, я ставлю GOMAXPROCS=9999 рантайм инициализирует логические процессоры

(`p`) в соответствии с этим значением. ничего особенного, просто какие-то структурки, которые менеджат контекст треда. но каждой p нужен тред (`m`), и вот здесь, в месте где инициализируются p, можно увидеть, как создаются треды под каждую p: https://github.com/golang/go/blob/6ecd5f750454665f789e3d557548bb5a65ad5c3a/src/runtime/proc.go#L1473

Вопрос, почему тредов в итоге я вижу не более 20 (через профайлер)? Куда они деваются, если мы явно видим создание тредов?

16 ответов

17 просмотров

Почитал кусок кода и у меня сходу вопрос - это типа ок, что переменные названы одной буквой? Авторов голанга по идее бы макконеел за такое побил клавиатурой по голове

Egor
Почитал кусок кода и у меня сходу вопрос - это тип...

есть мнение, что если контекст функции понятен, но нет смысла вплетать шумиху буквенную

Egor
Почитал кусок кода и у меня сходу вопрос - это тип...

В целом не ок, рекомендуется соблюдать баланс скоупа и длины переменной. Если это небольшой цикл, то можно i. Если внутри цикла много кода и i потом много раз используется, то лучше дать семантическое название, типа book_id. Есть линтер (не идеальный), который проверяет это: https://github.com/blizzy78/varnamelen Но есть нюансы, в виде условных обозначений. Если везде базы данных называют db, то две буквы ок. https://dave.cheney.net/practical-go/presentations/qcon-china.html#_use_a_consistent_naming_style И упрекать авторов го в том, что они не следуют go way не совсем честно, тк как такового го еще тогда не было и обросших гайдлайнов к нему.

Batyr TokenEcho.com
В целом не ок, рекомендуется соблюдать баланс скоу...

по вашей же ссылке type Person struct { Name string Age int } // AverageAge returns the average age of people. func AverageAge(people []Person) int { if len(people) == 0 { return 0 } var count, sum int for _, p := range people { sum += p.Age count += 1 } return sum / count } In this example, the range variable p is declared on line 10 and only referenced once, on the following line. p lives for a very short time both on the page, and during the execution of the function. A reader who is interested in the effect values of p have on the program need only read two lines. By comparison people is declared in the function parameters and lives for seven lines. The same is true for sum, and count, thus they justify their longer names. The reader has to scan a wider number of lines to locate them so they are given more distinctive names. I could have chosen s for sum and c (or possibly n) for count but this would have reduced all the variables in the program to the same level of importance. I could have chosen p instead of people but that would have left the problem of what to call the for …​ range iteration variable. The singular person would look odd as the loop iteration variable which lives for little time has a longer name than the slice of values it was derived from.

Batyr TokenEcho.com
И?

в целом ок получается

Batyr TokenEcho.com
В целом не ок, рекомендуется соблюдать баланс скоу...

Второе предложение: Если это небольшой цикл, то можно i. Если внутри цикла много кода и i потом много раз используется, то лучше дать семантическое название, типа book_id.

Максим Федоров
по вашей же ссылке type Person struct { Name str...

Если скоуп короткий, можно p. Если там 20 строк внутри цикла, лучше person

Максим Федоров
какой персон в фалй proc

Я так понимаю, вы не читали даже то, что сами прислали https://t.me/gogolang/882659

Egor
Почитал кусок кода и у меня сходу вопрос - это тип...

не ок. И не надо так делать. Но есть места, где по-другому неудобно и в целом выходит терпимо

Egor
Почитал кусок кода и у меня сходу вопрос - это тип...

там еще беконечная копипаста err := someFunc() if err != nil { return err } 😁

Сколько у вас ядер на проце?:)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта