Práce s vlákny v C

Re:Práce s vlákny v C
« Odpověď #45 kdy: 25. 01. 2021, 19:41:22 »
[sorry, omylem jsem si misto citace zmenil prispevek. Tenhle mel byt pred tim pred nim]

Mechanismus pointeru a channelu neni slozity na pochopeni.
O tom tady asi neni sporu.

V normalnim programu mi ty pointerovane data budou vznikat lokalne v ramci loop smycky
Tuhle predstavu "normalniho programu" asi uplne nesdilim. Struktury podle me bezne obsahuji kde co, co vzniklo kde jak.

Samozrejme, pokud za "normalni program" budes povazovat jenom nejaky producer-consumer, co si posila inty, tak pak jo :)

Pokud budu chtit v danem pripade zamezit tomuto v GO, staci do channelu posilat pointery na hluboke kopie danych struktur a hned je v main threadu zapominat.
Abych te citoval: "ale kdo to v realu dela" :)

Krom toho, nejsem si uplne jisty, ze to je reseni pro vsechny situace. Musim zapremyslet :)

K tomu bych dodal: CoW. A je po problému.
No ty ses king teda. Takze problem "v Go nejde zarucene bezpecne pouzivat channely" jsi prevedl na problem "v Go nejde zarucene bezpecne implementovat CoW" :)


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Práce s vlákny v C
« Odpověď #46 kdy: 25. 01. 2021, 19:47:17 »
Minimalne samozrejme nefunguje pro ruzny resourcy typu sitovy spojeni, filedescriptor apod., ale to asi neni potreba zduraznovat.
Kdo by proboha kanálem posílal síťová spojení nebo handle na soubor? Někdo po lobotomii? :)
A když už to pošle, tak to nebude měnit, že...

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Práce s vlákny v C
« Odpověď #47 kdy: 25. 01. 2021, 19:51:47 »
K tomu bych dodal: CoW. A je po problému.
"v Go nejde zarucene bezpecne pouzivat channely" jsi prevedl na problem "v Go nejde zarucene bezpecne implementovat CoW" :)
Obávám se, žes něčemu neporozuměl. Jen teď nevím, jestli jde o CoW, nebo něco složitějšího. Fakt v tom hledáš něco, co v tom není (nebo jen schválně prudíš), protože už tu padly dva funkční návrhy, jak to řešit.

Re:Práce s vlákny v C
« Odpověď #48 kdy: 25. 01. 2021, 19:53:41 »
Kdo by proboha kanálem posílal síťová spojení nebo handle na soubor? Někdo po lobotomii? :)
A když už to pošle, tak to nebude měnit, že...
Ja ti nevim, Idrisi, ty ses prece dost chytrej. To mi vazne nerozumis, o cem mluvim?

Mam nejakou svoji strukturu a v ni mam nejakou strukturu, kterou jsem ziskal z nejake knihovny. A ted NEVIM, jestli ji muzu bezpecne poslat kanalem ze sve goroutiny A do sve goroutiny B. Ne, ja s ni nechci dal pracovat v goroutine A. Je jenom NEVIM, jestli ta struktura nahodou ssebou netahne neco, co by mohlo po tehle operaci zpusobit problem. Uz si rozumime? Problem je v tom ze v Go nevim, co je bezpecne a co neni. A prekladac mi to neumi rict. Uz si rozumime?

Napriklad kdyby ta struktura obsahovala mutex, tak je problem. Takze kazdej, kdo vlozi do nejake struktury mutex, musi byt po lobotomii?!
« Poslední změna: 25. 01. 2021, 19:55:31 od Mirek Prýmek »

Re:Práce s vlákny v C
« Odpověď #49 kdy: 25. 01. 2021, 19:54:47 »
Obávám se, žes něčemu neporozuměl. Jen teď nevím, jestli jde o CoW, nebo něco složitějšího. Fakt v tom hledáš něco, co v tom není (nebo jen schválně prudíš), protože už tu padly dva funkční návrhy, jak to řešit.
Pokud chces bezpecne implementovat CoW, musis mit k dispozici dobre fungujici const. Coz Go nema.


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Práce s vlákny v C
« Odpověď #50 kdy: 25. 01. 2021, 19:58:32 »
Napriklad kdyby ta struktura obsahovala mutex, tak je problem.
Vymýšlíš nesmysly. To problém není, dokud na ten mutex nesáhneš.
Evidentně se tu všichni shodneme, že když někdo hodně prasí, tak můžou v programech s více vlákny nastat probémy. Nejen v Go. To bych nevyčítal žádnému jazyku, ale samozřejmě, kdo chce psa bít...

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Práce s vlákny v C
« Odpověď #51 kdy: 25. 01. 2021, 20:00:00 »
Obávám se, žes něčemu neporozuměl. Jen teď nevím, jestli jde o CoW, nebo něco složitějšího. Fakt v tom hledáš něco, co v tom není (nebo jen schválně prudíš), protože už tu padly dva funkční návrhy, jak to řešit.
Pokud chces bezpecne implementovat CoW, musis mit k dispozici dobre fungujici const. Coz Go nema.
Prosím omezit produkci pochybných tvrzení na jedno za den, jinak se nám tu budou akumulovat.

Re:Práce s vlákny v C
« Odpověď #52 kdy: 25. 01. 2021, 20:00:22 »
Vymýšlíš nesmysly. To problém není, dokud na ten mutex nesáhneš.
Evidentně se tu všichni shodneme, že když někdo hodně prasí, tak můžou v programech s více vlákny nastat probémy. Nejen v Go. To bych nevyčítal žádnému jazyku, ale samozřejmě, kdo chce psa bít...
Ale to neni muj mutex! To je mutex, ktery si do te struktury dala ta knihovna. Ja vubec nevim, ze tam je, natoz abych na nej chtel sahat. Ja proste NEVIM, chapes?!

Re:Práce s vlákny v C
« Odpověď #53 kdy: 25. 01. 2021, 20:01:09 »
Prosím omezit produkci pochybných tvrzení na jedno za den, jinak se nám tu budou akumulovat.
Kdyz dovolis, omezim celkovy pocet prispevku na nulu, protoze tohle je vazne nedustojny.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Práce s vlákny v C
« Odpověď #54 kdy: 25. 01. 2021, 20:06:06 »
Vymýšlíš nesmysly. To problém není, dokud na ten mutex nesáhneš.
Evidentně se tu všichni shodneme, že když někdo hodně prasí, tak můžou v programech s více vlákny nastat probémy. Nejen v Go. To bych nevyčítal žádnému jazyku, ale samozřejmě, kdo chce psa bít...
Ale to neni muj mutex! To je mutex, ktery si do te struktury dala ta knihovna. Ja vubec nevim, ze tam je, natoz abych na nej chtel sahat. Ja proste NEVIM, chapes?!
Když o něm nevíš, není problém. OMG ::)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Práce s vlákny v C
« Odpověď #55 kdy: 25. 01. 2021, 20:06:52 »
Prosím omezit produkci pochybných tvrzení na jedno za den, jinak se nám tu budou akumulovat.
Kdyz dovolis, omezim celkovy pocet prispevku na nulu, protoze tohle je vazne nedustojny.
To bude nejlepší, protože CoW a const v jazyce nijak nesouvisí.

Re:Práce s vlákny v C
« Odpověď #56 kdy: 25. 01. 2021, 20:11:27 »
To bude nejlepší, protože CoW a const v jazyce nijak nesouvisí.
Z toho tvrzeni jsi vypustil to "bezpecna implementace".

Re:Práce s vlákny v C
« Odpověď #57 kdy: 25. 01. 2021, 20:41:06 »
Rozjela se tady docela flamewar. Moc teda nechápu proč, go skutečně negarantuje, že v programu není data race. Pokud chci takové garance, musím sáhnout jinam.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Práce s vlákny v C
« Odpověď #58 kdy: 25. 01. 2021, 21:12:04 »
Rozjela se tady docela flamewar. Moc teda nechápu proč, go skutečně negarantuje, že v programu není data race. Pokud chci takové garance, musím sáhnout jinam.
Skvělý odkaz, merci beaucoup.

Re:Práce s vlákny v C
« Odpověď #59 kdy: 25. 01. 2021, 23:52:11 »
Skvělý odkaz, merci beaucoup.
Docela pěkný, ale takový základní věci, nic extra, ne?

Jestli si radši čteš než diskutuješ a prověřuješ argumenty, tak třeba líp než to moje plkání přijmeš:

https://medium.com/@sargun/go-concurrency-considered-harmful-26499a422830 (vypichuju odstavec "The worst part about this is that there is no guarantee ...")

https://bluxte.net/musings/2018/04/10/go-good-bad-ugly/#mutability-is-hardcoded-in-the-language
https://bluxte.net/musings/2018/04/10/go-good-bad-ugly/#mutability-and-channels-race-conditions-made-easy