Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Star wars, care e ordinea?

Upgrade stocare! Pot clona SS...

Oferta de locuinte a scazut in Ro...

amortizoare pentru alt model
 Ulei ungere lant /ulei amestec Hu...

Vreau sa incep sa joc tenis de camp

titanic 1:200 libertatea

Upgrade ram Asus Rog Zephyrus G16...
 Terminator End of war 2023

Senzor de prezența/mișc...

Filmare camera video sau smartphone

Rog confirmare/infirmare solutie ...
 Cablu fan controller - placa de b...

Un sfat, va rog, ce senzori sa fo...

Rezerva succesorala, donatie scut...

Prima History
 

Batalia async in limbaje compilate

- - - - -
  • Please log in to reply
24 replies to this topic

#1
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 29,852
  • Înscris: 24.02.2007
[ https://www.youtube-nocookie.com/embed/Ws3jC6AJC_4?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]

Folositi async in prezent?

#2
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 19,770
  • Înscris: 24.02.2006
suntem in 2021. mai e cineva care nu foloseste async?

#3
bostanu_4u

bostanu_4u

    Junior Member

  • Grup: Junior Members
  • Posts: 213
  • Înscris: 30.12.2020
Da. PHP-istii nu au aceasta posibilitate. Dar e limbaj interpretat, nu compliat

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 29,852
  • Înscris: 24.02.2007

View Post_Smiley_, on 16 august 2021 - 17:58, said:

suntem in 2021. mai e cineva care nu foloseste async?

Cei ce folosesc, printre altele, Java & PHP.

#5
coniac

coniac

    Member

  • Grup: Members
  • Posts: 497
  • Înscris: 17.12.2019
Generator functions sunt tot o forma de async Se exista in PHP
In Java ai CompletableFuture, adica fix Promise din Javascript

https://www.baeldung...mpletablefuture

https://reactphp.org/

#6
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 19,770
  • Înscris: 24.02.2006

View Postdani.user, on 16 august 2021 - 18:28, said:

Cei ce folosesc, printre altele, Java & PHP.
daca te referi si la limbajele care nu au async, atunci ce sens are rost sa intrebi

View Postdani.user, on 16 august 2021 - 17:21, said:

Folositi async in prezent?
?

la php ti-a explicat bostanu_4u cum sta treaba.

#7
bostanu_4u

bostanu_4u

    Junior Member

  • Grup: Junior Members
  • Posts: 213
  • Înscris: 30.12.2020

View Postconiac, on 16 august 2021 - 18:48, said:

Generator functions sunt tot o forma de async Se exista in PHP
In Java ai CompletableFuture, adica fix Promise din Javascript

https://www.baeldung...mpletablefuture

https://reactphp.org/

Nu au treaba generatoarele cu async.
Generatoarele faciliteaza iterari pe structuri complexe.

Async inseamna sa poti executa in pararel mai multe functii si sa ai control total asupra lor.
ReactPHP ofera unele facilitati in acest sens, dar prea putine si cu multe limitari. Defapt e doar o suita de clase care face uz functia stream_set_blocking din PHP.
Nu se compara cu async nativ.

#8
coniac

coniac

    Member

  • Grup: Members
  • Posts: 497
  • Înscris: 17.12.2019
Async inseamna non-blocking IO
Atat
Ca e pe acelasi thread, ca in Python, sau pe threaduri diferite, ca in Java. n-are conteaza
Ideea e ca nu blochezi executia asteptand pe IO

#9
coniac

coniac

    Member

  • Grup: Members
  • Posts: 497
  • Înscris: 17.12.2019
Uite aici legat de generator functions vs async

https://towardsdatas...it-8442d2c77185

Sau vezi "Fluent Python", capitolul despre generators /coroutines

#10
bostanu_4u

bostanu_4u

    Junior Member

  • Grup: Junior Members
  • Posts: 213
  • Înscris: 30.12.2020
Parca era vorba de generatoarele din PHP ? Nimic asicron acolo

#11
coniac

coniac

    Member

  • Grup: Members
  • Posts: 497
  • Înscris: 17.12.2019
Generatoarele sunt la fel, indiferent de limbaj

function file_get_contentsss($url) {
sleep(3);
return file_get_contents($url);
}

function get() {
$a = file_get_contentsss("http://www.evz.ro");
echo "async ................\n";
yield $a;//await
return;
}

$s = get();
echo "After in code but executed first\n";
foreach ($s as $value) {
    echo substr($value, 0, 15);
}

#12
bostanu_4u

bostanu_4u

    Junior Member

  • Grup: Junior Members
  • Posts: 213
  • Înscris: 30.12.2020
Nu e acelasi lucru.
In codul tau file_get_contentsss va bloca tot scriptul

#13
coniac

coniac

    Member

  • Grup: Members
  • Posts: 497
  • Înscris: 17.12.2019
Csf, ncsf

function file_get_contentsss($url) {
//sleep(3);
yield file_get_contents($url);
}

function get() {
echo "async1 ................\n";
$a = file_get_contentsss("http://www.evz.ro");
yield from $a;//await
echo "async2 ................\n";
return;
}

$s = get();
echo "After in code but executed first\n";
foreach ($s as $value) {
    echo substr($value, 0, 15), "\n";
}

#14
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,290
  • Înscris: 21.04.2004

View Post_Smiley_, on 16 august 2021 - 17:58, said:

suntem in 2021. mai e cineva care nu foloseste async?
Io. Si sper sa nu folosesc vreodata. That's some ugly fucking shit right there :lol:

#15
coniac

coniac

    Member

  • Grup: Members
  • Posts: 497
  • Înscris: 17.12.2019
In Javascript cand scrii

const a = await fetch(...)

ce crezi ca se intampla ?
La un moment dat tot trebuie sa astepti
Si culmea Javascipt are minimum 3 threaduri : main thread, micro-task , macro -task. Plus 1..n threaduri pentru service workers
In Javascript s-a plecat de la "callback hell", s- a trecut prin Promise si s-a ajuns la async- await
Dar constructul async-await e doar o modalitate de a scrie cod async intr-o maniera care pare sync
In Javascript ai React-Redux care foloseste async, si ai si React-Saga, care foloseste generatoare De ce ? Pentru ca in Javascript generatoarele se executa pe alt thread

In Python , desi e un singur thread, async e pe bune
Sincer, nu cunosc exact detaliile de implementare a generatoarelor in PHP, dar aparent e jalnic
O sa ma mai gandesc si poate revin

#16
bostanu_4u

bostanu_4u

    Junior Member

  • Grup: Junior Members
  • Posts: 213
  • Înscris: 30.12.2020
Asa este, astepti pentru event loop sau acel thread pool, dar nu si pentru munca efectiva care o face o functie ca si fetch(). Si aia reprezinta partea cea mai mare a timpului.
Toate functiile native async sunt atribuite pe un thread separat de acel thread pool. E si configurabil numarul maxim de threaduri.
La functiile async definite de user nu este asa, dar rareori ai nevoie sa executi o functie de a ta pe un thread separat. Cand ajungi la asa o situatie e clar ca vei deschide proces separat pentru ea, sau macar un worker thread. Si nu pentru ca nu suporta js-ul multithreading din main thread cu ceva sintaxa simpla, dar pentru ca este de porc sa pui la gramada functii nu au treaba una cu alta. Daca vreau sa reinventez fetch()  este evident ca voi face script separat pentru asta, si il voi invoca la nevoie din scriptul principal

#17
coniac

coniac

    Member

  • Grup: Members
  • Posts: 497
  • Înscris: 17.12.2019
Hai ca m-am lamurit
In Python face async pe bune pe un singur thread folosind modulul asyncio, care are la baza corutinele
In Python o corutina este un generator care nu doar emite valori, dar si primeste

a = yield value  vs  yield value

In alte limbaje nu se face distinctia asta

Echivalent in PHP ai
https://amphp.org/
https://www.swoole.co.uk/

Si am vazut ca si
https://reactphp.org/
are tot generatoarele la baza .

Toate chestiile astea folosesc generatoare/corutine plus un event loop homemade, so to speak
Dar ideea e ca se poate async pe bune in PHP

#18
bostanu_4u

bostanu_4u

    Junior Member

  • Grup: Junior Members
  • Posts: 213
  • Înscris: 30.12.2020
Degeaba 'yield' poate actiona ca un 'await', daca iti lipsesc functiile asincrone. Nu exista asa ceva in php. Sa le implementezi tu prin streams si ceva event loop nu e tot una cu sa le ai la dispozitie nativ. Te lovesti rapid de tot felul de limitari. Incearca sa faci echilvalentul fwrite in mod async si vezi cum merge

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate