Size: a a a

2020 May 17

A

Aleksandr Khristenko in PHP
Вообще, если у нас в программе 20 корутин с неблокирующими операциями мы вполне можем это заменить на 20 тредов с блокирующими.
И поведение останется тем-же. Только ресурсов жрать больше будет.
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
Окей, а в чем принципиальная разница?
https://youtu.be/XBXQxseL_Bs?t=1495 буквально пару мин со схемами
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
https://youtu.be/XBXQxseL_Bs?t=1495 буквально пару мин со схемами
Я выше 4 сообщения уточнения своего вопроса написал.
источник

АН

Авроамэриканец Начрэ... in PHP
Sergey Zolotov
в джаве даж от тредов отказываются*
Где об этом говорится? Не увидел никакой информации об отказе в ссылке сообщением ниже. Только о введении виртуальных тредов
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
Я выше 4 сообщения уточнения своего вопроса написал.
20 корутин тебе стоить будут несколько байт. 20 тредов около 10мб памяти. 1-10к+ параллельных тредов это уже жирно

у каждого треда свой стек, переключение на уровне ОС (контекст свитчи и все такое). особо не заметно на 1 запрос = 1 тред. но если внутри параллелишь активно (где-то базу дернул из двух потоков, где-то десяток запросов на другие сервисы отправил) и это все начнет сильно цпу палить
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
20 корутин тебе стоить будут несколько байт. 20 тредов около 10мб памяти. 1-10к+ параллельных тредов это уже жирно

у каждого треда свой стек, переключение на уровне ОС (контекст свитчи и все такое). особо не заметно на 1 запрос = 1 тред. но если внутри параллелишь активно (где-то базу дернул из двух потоков, где-то десяток запросов на другие сервисы отправил) и это все начнет сильно цпу палить
Я конкретно про этот пункт. A thread has access to the same address space as other threads in your process, and can do whatever they want with it. You have to take extreme pains to avoid accidentally doing the wrong thing. You'll probably mess it up, and the symptoms will show up in an unrelated part of the program 10 minutes later.
Относительно него корутины ничем не лучше потоков.
источник

A

Aleksandr Khristenko in PHP
Т.е. с точки зрения ресурсов - да, корутины выигрывают.
Но с точки зрения всего остального это почти те-же треды.
источник

SP

Sergey Protko in PHP
Aleksandr Khristenko
Т.е. с точки зрения ресурсов - да, корутины выигрывают.
Но с точки зрения всего остального это почти те-же треды.
с маленькой пометкой что "они как бы как и треды и гонки у тебя там могут быть но минимально гарантии очередности действий у тебя есть"
источник

SP

Sergey Protko in PHP
то есть скажем атомарно поменять значение переменной не требует сложных вещей
источник

A

Aleksandr Khristenko in PHP
Sergey Protko
то есть скажем атомарно поменять значение переменной не требует сложных вещей
Это нерелевантно же. В расте с многопоточностью тоже несложно менять атомарно значение.
источник

A

Aleksandr Khristenko in PHP
Sergey Protko
с маленькой пометкой что "они как бы как и треды и гонки у тебя там могут быть но минимально гарантии очередности действий у тебя есть"
А что за гарантии очередности?
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
Т.е. с точки зрения ресурсов - да, корутины выигрывают.
Но с точки зрения всего остального это почти те-же треды.
не совсем. с корутинами у тебя будет скорее всего CSP (акторы и отказ от общего спейса)
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
не совсем. с корутинами у тебя будет скорее всего CSP (акторы и отказ от общего спейса)
То есть эти подходы внезапно перестают работать в случае с тредами?
источник

SZ

Sergey Zolotov in PHP
но не всегда возможно и приходится синхронизироваться
источник

SZ

Sergey Zolotov in PHP
с тредами тоже можно. но дорого)
источник

SZ

Sergey Zolotov in PHP
да и как-то не принято
источник

SP

Sergey Protko in PHP
Aleksandr Khristenko
То есть эти подходы внезапно перестают работать в случае с тредами?
единственное преимущество тредов по сравнению с многопроцессорной моделью + корутины это... как это не странно шаред адрес спэйс. И ты предлагаешь юзать треды и отказаться от единственного их бенифита?
источник

A

Aleksandr Khristenko in PHP
Sergey Protko
единственное преимущество тредов по сравнению с многопроцессорной моделью + корутины это... как это не странно шаред адрес спэйс. И ты предлагаешь юзать треды и отказаться от единственного их бенифита?
Я пытаюсь понять, почему вдруг если треды плохие то корутины нет. Если не рассматривать вопрос ресурсов а смотреть только на их модель работы.
источник

A

Aleksandr Khristenko in PHP
Sergey Protko
единственное преимущество тредов по сравнению с многопроцессорной моделью + корутины это... как это не странно шаред адрес спэйс. И ты предлагаешь юзать треды и отказаться от единственного их бенифита?
У корутин так то тоже шаред адес спейс, не? Они в рамках одного процесса крутятся.
источник

SP

Sergey Protko in PHP
Aleksandr Khristenko
У корутин так то тоже шаред адес спейс, не? Они в рамках одного процесса крутятся.
> То есть эти подходы внезапно перестают работать в случае с тредами?
источник