Size: a a a

Programming Offtop

2020 July 23

TP

Tim Plotnikov in Programming Offtop
Alexander Nozik
С чем-то. Есть понятие точки синхронизации. Когда один кусок кода ждет завершения другого.
Когда вы запускаете два параллельных потока они не синхронизированы ни друг с другом  и не обязательно с родителем
источник

AN

Alexander Nozik in Programming Offtop
Tim Plotnikov
Когда вы запускаете два параллельных потока они не синхронизированы ни друг с другом  и не обязательно с родителем
Если речь о параллельной обработке коллекции, то на этапе сбокри результата они все между собой синхронизованы. Главный поток ждет завершения всех дочерних, закрывает их и продолжает работать
источник

ML

Mikhail Levchenko in Programming Offtop
спасиб)
но у меня полно шаблонов в сохранёнках, а вот шуток не очень много, уже повторяются по второму кругу
источник

I

Ilmir in Programming Offtop
Mikhail Levchenko
спасиб)
но у меня полно шаблонов в сохранёнках, а вот шуток не очень много, уже повторяются по второму кругу
Конкретно для этого: Интересно, как устроены корутины? Bytecode View -> Decompile @
источник

I

Ilmir in Programming Offtop
(
Если ты считаешь, что ФП - это писать комбинаторы через точку, то твой посыл уже неверен. Для ркса тоже можно написать какой-нибудь do-notation (собственно, в эрроу написали), и он будет выглядеть максимально императивно, я могу показать
Более того, иерархизация конкурентных вычислений есть в хаскеле с 2012 года: https://hackage.haskell.org/package/async
Я же говорю о том, что если бы котлин вместо того, чтобы сеять хаос в сигнатурах, которые в противном случае выглядели бы просто как fun hehmda(c: Continuation<A>, ...) мог поддержать ХКТ с тайпклассами, объединить через дырку разные экосистемы и стать великим
Через где-то 4-5 часов напишу подробный ответ, что я имею в виду, говоря "удобный" и "не сойти с ума".
источник

I

Ilmir in Programming Offtop
(
Но перл "императивное для конкурентного, а ФП для параллельного" достоин ебанатики, уж извини Ильмир
А что, @noraltavir можно, а мне нельзя? "Чем я хуже?"
источник

TP

Tim Plotnikov in Programming Offtop
Alexander Nozik
Если речь о параллельной обработке коллекции, то на этапе сбокри результата они все между собой синхронизованы. Главный поток ждет завершения всех дочерних, закрывает их и продолжает работать
Не всегда. Например в Hadoop вы каждый элемент коллекции можете отправить на другой компьютер и навсегда забыть про эту отправку.
Потом каждый компьютер обработает свой элемент, отправит его на сборку и забудет про него.
Они не синхронизированы.

Давайте так: вы согласны, что синхронный вызов это когда код может продолжить выполнение только после того как завершится предыдущая операция, а асинхронный - когда код продолжает выполнение не дожидаясь результата?
источник

AE

Alexandr Emelyanov in Programming Offtop
Tim Plotnikov
Ваше понимание параллельный и синхронный?
Вот тут надо уже вас отправлять читать Вики
источник

AN

Alexander Nozik in Programming Offtop
Tim Plotnikov
Не всегда. Например в Hadoop вы каждый элемент коллекции можете отправить на другой компьютер и навсегда забыть про эту отправку.
Потом каждый компьютер обработает свой элемент, отправит его на сборку и забудет про него.
Они не синхронизированы.

Давайте так: вы согласны, что синхронный вызов это когда код может продолжить выполнение только после того как завершится предыдущая операция, а асинхронный - когда код продолжает выполнение не дожидаясь результата?
Синхронный - это там, где есть синхронизация (то есть ожидание). Все
источник

TP

Tim Plotnikov in Programming Offtop
Alexander Nozik
Синхронный - это там, где есть синхронизация (то есть ожидание). Все
print(1)
print(2)
print(3)


Это синхронные вызовы?
источник

AN

Alexander Nozik in Programming Offtop
Tim Plotnikov
print(1)
print(2)
print(3)


Это синхронные вызовы?
да. хотя пример так себе.
источник

AM

Andrew Mikhaylov in Programming Offtop
Alexander Nozik
да. хотя пример так себе.
Я уверен, Тимофей уже пишет пример, в котором принт укладывает сообщения в очередь на отправку на сервер.
Вы б о терминологии договорились, прежде чем спорить :)
источник

U

Unat in Programming Offtop
Andrew Mikhaylov
Я уверен, Тимофей уже пишет пример, в котором принт укладывает сообщения в очередь на отправку на сервер.
Вы б о терминологии договорились, прежде чем спорить :)
Укладывать их он будет синхронно
источник

AM

Andrew Mikhaylov in Programming Offtop
Unat
Укладывать их он будет синхронно
Необязательно 🌚
источник

AM

Andrew Mikhaylov in Programming Offtop
Но в случае с принтом, конечно, синхронно скорее всего)
источник

U

Unat in Programming Offtop
Andrew Mikhaylov
Необязательно 🌚
В примере выше - обязательно.
источник

AN

Alexander Nozik in Programming Offtop
Andrew Mikhaylov
Я уверен, Тимофей уже пишет пример, в котором принт укладывает сообщения в очередь на отправку на сервер.
Вы б о терминологии договорились, прежде чем спорить :)
Так я сказал максимально простое определение.
источник

TP

Tim Plotnikov in Programming Offtop
Alexander Nozik
да. хотя пример так себе.
Полностью согласен, но суть передана точно.

А асинхронный тогда будет так?

print(1)
launch {
 val number = await 2;
 print(number);
}
print(3)
источник

AN

Alexander Nozik in Programming Offtop
Tim Plotnikov
Полностью согласен, но суть передана точно.

А асинхронный тогда будет так?

print(1)
launch {
 val number = await 2;
 print(number);
}
print(3)
вот то, что в ланче - да, асинхронное (почти на самом деле, потому что print синхронизируется на уровне JVM). Его результат никто не ждет.
источник

TP

Tim Plotnikov in Programming Offtop
Alexander Nozik
вот то, что в ланче - да, асинхронное (почти на самом деле, потому что print синхронизируется на уровне JVM). Его результат никто не ждет.
А теперь вот этот:


print(1)
new Thread(()=> {
  sleep(2000)
  print(2)
}).start()
print(3)

Тоже асинхронный?
источник