Portál AbcLinuxu, 30. dubna 2025 16:48
Nevim, jsou pthreads dostatečně multiplatformní? Třeba jednou budeš používat nějaký neposixový operační systém, co můžeš vědět.Takže Windows? Tak se případně naučí pár funkcí navíc, žádná věda to není.
Nevim, přijde mi lepší dělat programy rovnou jako multiplatformní, když tomu nic nebrání.POSIX slouží sám o sobě k multiplatformnímu vývoji. Že je Redmond centrálou blbů, za to ostatní nemůžou. Navíc je to pár funkcí - když si vezmu, že jsem se učil WinAPI, MFC, GTKmm i Qt, připadá mi tato diskuze trochu směšná
Že je Redmond centrálou blbů...
Proč je Redmond centrálou blbů?
Nedělají to náhodou proto, že buď jsou toho názoru, že jejich řešení bude ve výsledku lepší, nebo proto, že jim to přinese zisk?B je správně, upevňuje to monopol. Nepřijde mi, že bychom na Unixech o něco lepšího přicházeli.
Ať tak nebo tak, v tomhle se moc neliší od většiny ostatních firem.Když se podívám na ostatní moderní OS, tak ty se POSIXem vesměs řídí. Takže liší.
A už vůbec mi to nepřijde jako jednání blba.Blbcem jsem nemyslel hloupého člověka, ale spíš něco jako "parchanta" apod.
B je správně, upevňuje to monopol. Nepřijde mi, že bychom na Unixech o něco lepšího přicházeli.Dneska se celý den pokouším portovat svůj program, který komunikuje po sériovém portu, aby fungoval i ve Windows. A jak to v Linuxu šlo jednoduše, tak to v moftech jde složitě. Bych řekl, že na Unixech přicházíme o způsob, jak snadno zabít spoustu času.
POSIX slouží sám o sobě k multiplatformnímu vývoji. Že je Redmond centrálou blbů, za to ostatní nemůžou.Mimochodem, Windows volitelně podporují pthready prostřednictvím Interixu.
To že je to tady víc na očích je věc jiná.Vláda je místem, kde takové věci nemají co dělat. Tečka.
Výkřiky typu Redmond je centrála blbců, to je vtipný. Ty lidi na rozdíl od tebe už něco dokázali, a málo toho není.Dokázali co? Kopírovat nápady skutečně inovativních firem a podvolit si trh. Pro spotřebitele jedno lepší než druhé.
V lékeřství nebo školství se dějí věci úplně stejné. Tam mají co dělat? Právě tam by neměli... Je to všude tak to nekonkretizuj tam kde to není vhodné prosímtě.
IMHO okopírovat a implementovat nápad v closed-source světe je daleko složitější než v open-source světe. Takže jejich invenci bych neshazoval. To s podvolením trhu, no, to je pravda, ale je to komerční subjekt, tak to prostě chodí, buď vládneš a nebo tě někdo ovládá a sežere.
To s podvolením trhu, no, to je pravda, ale je to komerční subjekt, tak to prostě chodí, buď vládneš a nebo tě někdo ovládá a sežere.Není to tak černobílé.
Uvedl jsi příklad, já ti dokážu uvést protipříklad. Je nesmyslné obořovat se výhradně proti jedné skupině a ignorovat při tom stejné jednání všude jinde.
Je to přesně takhle černobílé, alespoň v dnešní době. Každý tvůj zisk jde na úkor ztrát konkurence. Ty máš buď možnost se s konkurencí spojit ve prospěch obou, nebo chtě nechtě budete v konkurenčním boji. A když jde o prachy tak to moc čistý boj není. A nebo mě pouč odborníku. Zatím jsi řekl pouze to, že to není černobílé. Něco konkrétního by bylo?
buď vládneš a nebo tě někdo ovládá a sežere.Kdyby tohle byla pravda, tak je v každém odvětví jen jedna solidní firma.
Uvedl jsi příklad, já ti dokážu uvést protipříklad. Je nesmyslné obořovat se výhradně proti jedné skupině a ignorovat při tom stejné jednání všude jinde.Co to prosímtě meleš? Doli na začátku řekl "něco podobného je i vláda", takže se zjevně neobořuje proti výhradně jedné skupině (MS) ani výhradně proti dvěma skupinám (MS a vláda), ale proti tolika skupinám, proti kterým má výhrady.
Ty máš buď možnost se s konkurencí spojit ve prospěch obou, nebo chtě nechtě budete v konkurenčním boji.A nebo konkurenci něco okopírovat, pak se s ní soudit (MS na to má, konkurence ne) a pak ji finančně vyčerpanou koupit i s programátorama, aby zalepili chyby, které do produktu MS během kopírování naflákal. Teď jsem si ale nas*al do vlastního hnízda, protože tohle tvrzení vlastně popírá, že by MS neměl vlastní invenci. Má, vynalezl tenhle postup.
A když jde o prachy tak to moc čistý boj není.A protože tvrdíme, že nic není černobílé, tak jsou různé stupně nečistoty toho boje. A MS je na špici (podplácení, FUDy, soudy... zapomněl jsem na něco?)
Vzhledem k tomu, že řečené praktiky se užívají vážně všude, měl by tedy vyjmenovat všechny, jak tvrdíš, proti kterým má výhrady. Pokud tak neučiní, vypadá to, jako by měl výhrady právě jen kvůli vyjmenovaným.
Myslíš, že MS měl od začátku $$ na to, aby se soudil s konkurencí? Znáš něco o historii té firmy a situaci v době, kdy firmy jako MS a Apple začínaly? MS (tenkrát potažmo sám velký vůdce) prostě chytře využil všechny výhody, které mu doba poskytla. Doporučuju např. film Piráti ze Sillicon Valley.
Hmm, máš například o uplácení ze strany MS nějaký hmatatelný důkaz? Nebe jen papouškuješ oblíbenou historku?
Hmm, máš například o uplácení ze strany MS nějaký hmatatelný důkaz? Nebe jen papouškuješ oblíbenou historku?Projdi si staré zprávičky ohledně schvalování OOXML. Mám pocit, že ve Švédsku se podplácení provalilo.
Samotný průběh hlasování nelze nazvat jinak než fraškou. Ve Švédsku bylo ještě pár dní před hlasováním jasné, že norma s drtivým výsledkem neprojde. V den hlasování se ovšem dostavila cca 20 firem, partnerů Microsoftu, každá zaplatila několik tisíc dollarů za hlasovací právo, a OOXML bylo schváleno 20 hlasy. Proti bylo 6, a 4 hlasující raději urychleně opustili jednací sál, aby jejich jméno nebylo spojeno s touto fraškou. Následně se provalilo, že Microsoft zatlačil na své partnery a slíbil jim různé výhody, pokud si zakoupí hlasovací právo a budou hlasovat pro něj. Microsoft se následně přiznal, a Švédská organizace dodatečně zneplatnila svůj hlas pro hrubé porušení podmínek hlasování. Podobné "komedie" se odehrály v Maďarsku a Itálii, které rovněž neodešlou do ISO své hlasy a zdrží se hlasování.http://www.ddworld.cz/windows/standardizace-microsoft-ooxml-nefalsovana-fraska-5.html
U vzdělaných lidí (a na abclinuxu zvlášť) bych čekal znalosti webové prostředí. Zkrátka na web může kdokoliv napsat cokoliv za jakýmkoliv účelem a bez jakékoliv odpovědnosti.Což to víme - nicméně zrovna tenhle případ se omílal několikrát přímo tady, dokonce včetně té informace, že to MS přiznal... akorát ten ddworld byl první odkaz, který jsem našel,další byl na lživě a dál se mi hledat nechtělo.
Nevim, přijde mi lepší dělat programy rovnou jako multiplatformní, když tomu nic nebrání.No myslim, ze pouziti te knihovny z hlediska multiplatformovosti neni zas tak velka vyhra. Proste namisto relativne standardniho rozhrani (pthreads) by tvuj program vyzadoval rozhrani nejake vice ci mene obskurni multiplatformni knihovny. Treba to ITBB jsem ani nenasel v Debianu, takze bud spatne hledam, nebo jde o znacne obskurni knihovnu, ktera na prevazne casti Linuxovych systemu neni nainstalovana. A mit takovou knihovnu v zavislostech je otrava. To uz by bylo lepsi se podivat po knihovne implementujici pthreads pro ruzne platformy. Kdyz se objevi nova platforma, tak bych cekal, ze pro ni spis nekdo implememntuje pthreads, nez nejakou obskurni knihovnu.
Nevim, jsou pthreads dostatečně multiplatformní? Třeba jednou budeš používat nějaký neposixový operační systém, co můžeš vědět.No, zatím bych se chtěl naučit s pthreads (chci psát pro Linux/Unix) a pokud to někdy budu potřebovat, naučím se holt jiný. QThread bude asi následovat.
No hlavně je to vlastnost dané úlohy. Viz. http://en.wikipedia.org/wiki/Amdahl's_lawTeda podpořit tvrzení o "vlastnostech úlohy" odkazem na tvrzení, kde se o vlastnostech úlohy ani nemluví, to je teda síla. Kdyžtak http://en.wikipedia.org/wiki/P-complete.
OpenMP není pro clustery, ale právě pro paralelní programování se sdílenou pamětíJinak to se snad nějak vylučuje?
java.util.concurrent
je velmi chladné a vládnoucí (a já sprostý plagiátor).
Nejjistejsi zpusob, jak programovat vicevlaknove je to nepouzivat.Přesně tak, přece nebudeme procesor přetěžovat současnou prací všech čtyř jader naráz... Co já bych dal za to, aby
mdX_raid5
uměl počítat paritu na obou jádrech naráz a já neměl rychlost zápisu jenom 30MB/s.
Může sice udělat vícevláknové vyčíslování integrálu, kde se mu to opravdu zrychlíto se mi nezda, kdyz se stejne budou ty vlakna delit o procesorovy cas
Na mém počítači je poměr interaktivních gui aplikací na paralelizovatelné výpočty tak 1000:1 :-)
Překvapivě existují i počítače, kde je to naopak. :-)
Síťoví démoni sice typicky jsou vícevláknoví (nebo spíš víceprocesoví), ale jednotlivé instance spolu moc nekomunikují.
Jak kdy. Psal jsem jednoho takového, kde mne ani nenapadlo nepoužít thready, protože bych stejně musel většinu datových struktur řešit přes sdílenou paměť.
naučit se naprogramovat nějaké základní datové struktury (seznam, mapa) tak, aby byly použitelné ve vícevláknovém prostředíOno jedna věc je naprogramovat takovou strukturu tak, aby byla thread-safe, a druhá věc je, aby byla v paralelním prostředí rozumně výkonná a hlavně škálovatelná. To druhé je předmětem specializovaných vědeckých konferencí, na kterých publikují lidé typu Doug Lea. Když jsem četl, jak je v
java.util.concurrent
implementován spojový seznam, tak mi vstávaly vlasy hrůzou na hlavě návrhový vzor Jedináček (Singleton) s odloženým (lazy) vytvořením, kdy je potřeba zajistit, aby vznikl jen jeden objekt, ale aby se nemohlo stát, že nějaké vlákno dostane napůl vytvořený objektTo je vůbec zajímavá problematika. Double-checked locking?
To druhé je předmětem specializovaných vědeckých konferencí, na kterých publikují lidé typu Doug Lea. Když jsem četl, jak je vNáhodou, doporučuji si přečíst ten odkazovaný dokument, případně další články dvojice Michale&Scott. Také jsem si přečetl něco o teoretické konstrukci použité pro dokázání korektnosti (Linearizability, Herlihy&Wing). Moc zajímavé čtení. Každopádně platí, že nemá smysl vymýšlet nějakou vlastní thread-safe datovou strukturu.java.util.concurrent
implementován spojový seznam, tak mi vstávaly vlasy hrůzou na hlavě
na glorifikovaném Turingově strojiMyslím, že se dokazuje výpočetní ekvivalence Turingáče a lambda kalkulu, takže za glorifikovaný Turingův stroj bych klidně mohl označit i Lisp :-P
(map (lambda (x) (* 2 x)) seznam)
int * vrat_dvojnasobek(int *pole, int delka) { int *vysledek = malloc(sizeof(int)*delka); int i; for(i=0; i<delka; i++) vysledek[i] = pole[i]*2; return vysledek; }Kdybys byl kompilátor, v kterém případě bys rychleji (s menším množstvím výpočetních cyklů strávených přemýšlením nad jednotkou kódu) poznal, že dotyčný kus kódu vrací složenou datovou strukturu téže délky, jakou přijímá na vstupu, a že každý prvek výstupu je "čistou funkcí" (bez vedlejších účinků) vstupu, takže je možno v případě (kdyby byl výpočet výstupního prvku o složitější a trval o dost déle, než jedna iterace traverzování té struktury) rozhodit výpočet na víc procesorů na úrovni jazyka? Java je v tomhle třeba o něco dále, než Cčko, ale taky pořád žádná sláva, vlastně skoro vůbec žádná sláva. Aspoň že ty ukazatele jsou fuč. Člověk sice třeba u Haskellu musí dost změnit způsob přemýčlení, ale myslím, že se nám za třicet let budou haskellisté smát, až se budou za břicho popadat, protože jim ty STM programy a automaticky paralelizované algoritmy na šedesátičtyřjádrových noteboocích s procesory Intel Core 7 Sexagintaquattuor prostě budou běhat mnohem líp, než jak dobře bude běžet JBoss 23.1 na Javě 17.
java.util.concurrent
, pro Javu 7 rozšíření Fork-Join) i nové jazyky (X10). Že by se z Javy (jazyka) stal Haskell si nemyslím, ale je dost možné, že na Javě (platformě) bude za těch třicet let nějaká podobná potvornost dominovat.
Nebo se může stát, že někdo někde ty vrahy sežene, protože bušiče kódu v Javě vychováš snadno, ale bušiče kódu v Haskellu? Pochybuju. To spíš v tom Lispu, který nemá s přiřazením ani vedlejšími efekty problém Já myslím, že stačí počkat, až se javisté smíří s existencí STM, Concurrent Haskellu a Erlangu a vzdají pokusy o vláknový paralelismus složitých algoritmů na glorifikovaném Turingově stroji.Složité algoritmy a Java? Kde kupuješ matroš?
AtomicInteger
nebo AtomicLong
. Navíc pokud nevadí, že se ta jediná instance vytvoří hned při vytvoření třídy, dá se opravdový Jedináček zařídit v Javě snadno.
Ale je těžké si ověřit, že jsem to udělal správně, a je těžké pak nepodlehnout pokušení takový vlastní výtvor používatTo je asi nejtěžší na vícevláknovém programování. Pokud je nějaká chyba v synchronizaci, projeví se jenom občas a to ještě zpravidle někde úplně jinde, než kde je problém. A ani pak nestačí program ladit v debuggeru, protože ten úplně změní chování aplikace a k problému zpravidla nedojde. Takže většinou je jediná možnost – přečíst si příslušný zdrojový kód, pochopit ho a pak si logicky zdůvodnit, jestli ten kód je správně nebo špatně. Úplně jak za starých časů, kdy žádné debuggery neexistovaly.![]()
Datové struktury pro vícevláknová prostředí jsem myslel právě takové, které budou nejen thread-safe, ale budou se chovat nějak „rozumně“. Což nemusí být jen škálovatelnost. Existují i různé speciální případy – nějaká datová struktura se může nejprve jen vytvořit a naplnit, a pak už se z ní jenom čte – pak je zbytečné při každém čtení kontrolovat zámek. Nebo poměr čtení k zápisu je výrazně ve prospěch čtení a nevadí, že ihned po zapsání nemusí být data dostupná pro čtení jinému vláknu – pak je zase možné udělat zápis složitější a náročnější na paměť s tím, že čtení bude opět bez kontroly zámku. To asi není chování, které by bylo rozumné a škálovatelné obecně, ale někdy se hodí.Myslel jsem škálovatelnost co do počtu současně běžících (přistupujících k dané struktuře) vláken, což myslím popisuje i ty zvláštní případy. Ale jasně, požadavky jsou různé. Jinak ty zvrhlosti, které vymýšlejí šílení vědci, se právě týkají např. bezpečného souběžného přístupu k datové struktuře bez zamykání (třeba v Javě se dá s výhodou využít zápisu do
volatile
proměnné pro synchronizaci viditelnosti, brr To je asi nejtěžší na vícevláknovém programování. Pokud je nějaká chyba v synchronizaci, projeví se jenom občas a to ještě zpravidle někde úplně jinde, než kde je problém. A ani pak nestačí program ladit v debuggeru, protože ten úplně změní chování aplikace a k problému zpravidla nedojde. Takže většinou je jediná možnost – přečíst si příslušný zdrojový kód, pochopit ho a pak si logicky zdůvodnit, jestli ten kód je správně nebo špatně. Úplně jak za starých časů, kdy žádné debuggery neexistovaly.Za starých časů si člověk pořád ještě mohl udělat aspoň ladicí výpis
Jinak ty zvrhlosti, které vymýšlejí šílení vědci, se právě týkají např. bezpečného souběžného přístupu k datové struktuře bez zamykáníMyslíš Okasakiho?
Myslíte tuhle část? :-)
It is rather unfortunate that Linux revived this specter from the past. The BSD man page states: "This system call will be eliminated when proper system sharing mechanisms are implemented. Users should not depend on the memory sharing semantics ofvfork()
as it will, in that case, be made synonymous tofork(2)
."
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.