
Demuz
14.01.2018
20:03:32
или связанный список
Я просто хоть список из структур хочу попробовать так менять, сам принцип понять хочу.

Anton
14.01.2018
20:03:48
Указатель - это указатель на область в памяти компьютера. Данные ведь не в списке, а в памяти компьютера

Demuz
14.01.2018
20:03:54
Указатель на переменную нихрена блин не понимаю как работает. Понял что оригинальное значение меняет только.

Peter
14.01.2018
20:05:09
Упрощенно указатель это uint64 в котором содержится адрес объекта в RAM

Google

Demuz
14.01.2018
20:05:28
И еще, в плане конкуренции и тому подобное, с самим списком ничего страшного не будет? Если к примеру в него будет добавляться структура, и в этот же момент другой поток будет пытаться перезаписать значение переменной, лежащей в этом списке структуре.

Anton
14.01.2018
20:05:30
Указатель – переменная, значением которой является адрес ячейки памяти. То есть указатель ссылается на блок данных из области памяти, причём на самое его начало. Указатель может ссылаться на переменную или функцию. Для этого нужно знать адрес переменной или функции.

Sergey
14.01.2018
20:06:28

Demuz
14.01.2018
20:06:31
Так, смотрите, если я указываю new(Структура) это что?

Peter
14.01.2018
20:06:44

Sergey
14.01.2018
20:06:45
если кункуренция это парельльно ты имешь ввиду я хз

Demuz
14.01.2018
20:07:00

Sergey
14.01.2018
20:07:17
причем тут это то
лан

Demuz
14.01.2018
20:07:40

Sergey
14.01.2018
20:07:58
это так не работает
для этого узают мьютексы

Demuz
14.01.2018
20:09:00
Я юзаю и мьютексы и sync.Map кто то посоветовал юзать мьютексы, а кто-то sync.Map для карт, попробовал и то и то.

Google

Demuz
14.01.2018
20:09:12
Кто то здесь мне сказал что мьютексы могут тормозить систему.

Sergey
14.01.2018
20:09:16
ну тогда в чем вопрос там был

Demuz
14.01.2018
20:09:28
Про НЕ карту, а список.
Короче, итог подведу, в общем, я могу перезаписывать оригинальную переменную, если я знаю ее адрес?
Даже внутри 1к карт и списков и тд? Мне вот это интересно.

Mykyta
14.01.2018
20:10:25

Anton
14.01.2018
20:10:37
да

Demuz
14.01.2018
20:10:52

Sergey
14.01.2018
20:11:16
может вам не стоит писать код?

Demuz
14.01.2018
20:11:42

Sergey
14.01.2018
20:12:10
Не, это мой хлеб.
ну ты не знаешь как работает указатель. Не в обиду, но кто за это будет деньги платить странно

Demuz
14.01.2018
20:14:13

Александр
14.01.2018
20:14:39
что тут опять за боль и унижения? ?

Demuz
14.01.2018
20:14:45
Мне че, чтоб вопросы задавать сюда, нужно суперпрофессионалом быть чтоли?

Sergey
14.01.2018
20:14:46

Demuz
14.01.2018
20:14:57

Yuri
14.01.2018
20:15:10
хочу запустить N потоков, дождаться их выполения и при этом контроллировать сколько из них работает одновременно? не хочу писать сам , есть что-то кроме tomb?

Александр
14.01.2018
20:15:14
как обычно
краткое содержание 5 последних сезонов, пожайлуста ?

Demuz
14.01.2018
20:15:15
Может вам не стоит писать, может чё. Кого волнует че. Человек за помощью обращается.

Google

Александр
14.01.2018
20:15:41

Yuri
14.01.2018
20:15:51
горутин, сорян

Александр
14.01.2018
20:15:58
waitgroup

Yuri
14.01.2018
20:16:19
да, но количество запущенных одновременно

Sergey
14.01.2018
20:16:27

nezorflame
14.01.2018
20:17:10

Yuri
14.01.2018
20:17:26
верно, готовые решения есть?

nezorflame
14.01.2018
20:17:33
sync.Waitgroup
говорят же

Yuri
14.01.2018
20:18:02
а повыше фреймворки есть?

nezorflame
14.01.2018
20:18:11
-_-
почитайте сперва то, что вообще в языке есть

nezorflame
14.01.2018
20:18:21
https://golang.org/pkg/sync/

Yuri
14.01.2018
20:18:21
например чтобы еще context.WithCancel
т.е. запустили N горутин, из них одновременно M (M < N) и по стоп сигналу прекращаем все запущенные
sync.WaitGroup это лишь сапоги для этого болота, нужна еще палка, а лучше мостик поверх

Александр
14.01.2018
20:20:27
что вам мешает в цикле запустить N гоурутин, подождать и запустить еще?

Yuri
14.01.2018
20:20:36
да, так и делаем

Александр
14.01.2018
20:20:36
даже два вложенных цикла
(ой камни щаз полетят)

Google

nezorflame
14.01.2018
20:20:41
хочет динамическое M видимо
и по стопсигналу аборт мишн

Yuri
14.01.2018
20:21:11
но например cancel() от WithContext еще обрабатывать необходимо
итого 2 цикла и еще колбеки на cancel при получении сигнала

Александр
14.01.2018
20:21:33
зачем вам контекс?
он узкоспециализированный достаточно
не стоит его везде мешать

Yuri
14.01.2018
20:22:13
exec.CommandContext()
есть много файлов, их обрабатывают сторонним вызовом через suprocess.Popen (питоновский аналог)
одновременно более чем N обрабатывать опасно, очень ресурсоемкие вещи

Admin
ERROR: S client not available

Yuri
14.01.2018
20:23:20
но и рестарт/стоп важно обработать

nezorflame
14.01.2018
20:23:24
может подойти https://godoc.org/golang.org/x/time/rate

Yuri
14.01.2018
20:23:27
потому завершить все что начали

Александр
14.01.2018
20:24:00
помоему если вы так делаете то что-то пошло не так ?
первое правило программирования на golang - Если что-то выглядит костылем...

Yuri
14.01.2018
20:25:13

nezorflame
14.01.2018
20:25:14
создаете лимит, запускаете цикл по лимитеру, можно с контекстом

Yuri
14.01.2018
20:25:21

Google

nezorflame
14.01.2018
20:25:47
йеп
иногда так надо

Yuri
14.01.2018
20:26:50
по хорошему там все должно быть иначе, но иначе сделать нельзя , потому что мы лишимся работы и нас уволят
делаем доделку к стороннему продукту, и решаем проблему логов этого продукта
если он (продукт) сам решит проблему - у нас не будет продукта
ну вы поняли

Александр
14.01.2018
20:28:29
вы знаете... мне тут одну анологию подкинули, пользуйтесь.
Если на стене висит картина подписанная автором, там не подписано "и заказчик который торопил" ?

Yuri
14.01.2018
20:30:29
но в rust вот еть rayon, параллельные коллекции, а в го есть что-то подобное?
понимаю, это пахнет дженериками
но sync.Map появился

Александр
14.01.2018
20:31:12
опишите словами задачу

Yuri
14.01.2018
20:34:04
есть много файлов, их нужно обработать с помощью стороннего процесса (считай вызывать exec.Command)
файлы нужно параллельно обрабатывать, потому что каждый в отдельности долго (вызываем меделнный процесс на python)
одновременно не более 10 файлов обрабатывать, суб процесс прожерлив по памяти
данные в файлах очень дороги фирме, при стопе/рестарте нужно уметь graceful shutdown aka прекратить обработку и отпустить неначатые

Александр
14.01.2018
20:36:33
ну, делаете гоурутинку, там читаем файл и прочие извращения, запускаем 10 штук и ждем вайтгруппу

Yuri
14.01.2018
20:36:43
так и делаем

Александр
14.01.2018
20:36:45
в каждую гоурутинку кормим управляющий канал
в который в случаи шатдауна кидаем - умри умри

Yuri
14.01.2018
20:37:10
но все это очень и очень хрупко (выглядит так как минимум)

Александр
14.01.2018
20:37:26
что именно хрупко?

Yuri
14.01.2018
20:37:43
написанные код не вызывает доверия
хотя и обложен тестами