Autor Téma: Zatuhnutí hlavního vlákna při spuštění TTask.  (Přečteno 2689 krát)

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 468
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Zatuhnutí hlavního vlákna při spuštění TTask.
« Odpověď #15 kdy: 04-02-2021, 15:18:41 »
Cílem té knihovny je primárně usnadnit aplikačním programátorům život, tj. spouštět různé tasky a tak podobně v rozumných intencích a tam funguje dobře -  castecne to vystihuje to tvoje zizalky, ale nebyl bych tak kruty.

Radku díky za tuhle větu, neb ta mi vysvětlila naše vzájemné nepochopení.

Ono to totiž z mého pohledu dobře nefunguje, když vezmu v potaz původního tazatele a jeho hledání problému. Jasně, neznám jeho použití, ale viditelně to "cílovka" je a má problém. Ona náhodnost pak jen brutálně komplikuje diagnostiku.

Jinak důvod je jednoduchý - buďto přehnané ambice návrhu nad schopnosti programátora, nebo neschopnost programátora. Pokud bych rád navrhnul takový systém, je třeba se opravdu řádně zamyslet a né napsat hopem něco - neb pak to nesplní ten předpoklad - usnadnit aplikačním programátorům život. Pokud vyšší knihovna zanáší do problematiky zvláštní chování, je špatně navržena či špatně použita. Zde - díky důsledku - vytuhnutí volajícího vlákna je špatně navržena (i exception bych v této chvíli bral raději). Ke špatnému návrhu se přiklání i informace o tom, že čím více jader (tzn "lepší" počítač), tím je výsledek horší - to se opravdu hodně nepovedlo.

Co se týče knihoven, ke kterým není kód - ano, jsou takové a těm se spousty lidí vyhne, nebo si připlatí, aby ho mělo. Nicméně, například postgresDAC, který jsme několikrát kupovali, našli v něm chybu (třeba při použití v cmdline tam bylo pár bugů), tak nám autor poděkoval a odměnil (licencemi zdarma) tuto opravu.

Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux, (občas Delphi)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Zatuhnutí hlavního vlákna při spuštění TTask.
« Odpověď #16 kdy: 04-02-2021, 15:45:56 »
Cílem té knihovny je primárně usnadnit aplikačním programátorům život, tj. spouštět různé tasky a tak podobně v rozumných intencích a tam funguje dobře
Souhlasim s tim, ze EMBC by melo vedet, kdo je jejich typicky zakaznik. Ja to nevim. A soucasne zastavam postoj, ze kdyz stezejni funkci aplikace je napr. komunikace/multitasking, je nutne pouzit takove reseni, aby ty stezejni funkce byly pod kontrolou.

Jinak, ja bych ani necetl ten Tvuj odkaz do QC, ale mam dojem, ze posledni dobou se tu mnozi problemy s nevysvetlitelnou ducharinou kolem multitaskingu napr. ty anonymni thready a zdalo se, ze pres znacne usili se problemy nepovedlo identifikovat, prestoze by s tim podle teoretickych predpokladu zadne problemy byt nemely a nepamatuju, ze bych nekdy v zivote mel se thready problem. A to me rozcilovalo.

Ovsem pohled do System.Threading mnohe osvetluje :-( Takze ono jim to zase az tak dobre nejspis nefunguje, jinak bychom tady neresili takove elementarni problemy, zpusobene za scenou...

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3515
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Zatuhnutí hlavního vlákna při spuštění TTask.
« Odpověď #17 kdy: 04-02-2021, 15:52:25 »
TThread.CreateAnonymousThread nepouziva thread pool, to je normalni thread. Muzes mne nasmerovat prosim kde je ta debata?
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Zatuhnutí hlavního vlákna při spuštění TTask.
« Odpověď #18 kdy: 04-02-2021, 15:57:49 »
TThread.CreateAnonymousThread nepouziva thread pool, to je normalni thread. Muzes mne nasmerovat prosim kde je ta debata?
https://forum.delphi.cz/index.php/topic,17306.0/all.html

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Zatuhnutí hlavního vlákna při spuštění TTask.
« Odpověď #19 kdy: 04-02-2021, 16:04:20 »
našli v něm chybu (třeba při použití v cmdline tam bylo pár bugů), tak nám autor poděkoval a odměnil (licencemi zdarma) tuto opravu.
Treba je to nejakej pardal z doby predmikroprocesorove, kdy vyrobci jako HP platili za nalezeni bugu v prekladaci (zadny jsem nenasel)  ;D

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 468
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Zatuhnutí hlavního vlákna při spuštění TTask.
« Odpověď #20 kdy: 04-02-2021, 16:44:37 »
Treba je to nejakej pardal z doby predmikroprocesorove, kdy vyrobci jako HP platili za nalezeni bugu v prekladaci (zadny jsem nenasel)  ;D
Mě to přišlo jako slušnost, zvlášť když to nabídl sám, kolega s ním řešil primárně proč nám to nechodí (jestli neděláme botu), pak ladil, zjistil a nakonec jsme z toho udělali opravu, autor ji schválil a poslal prodloužení licencí. Koneckonců my pomohli jemu, tak od pomohl nám. A myslím, že takto by to mělo být obecně, koneckonců u fyzických výrobků to tak je.
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux, (občas Delphi)

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 65
  • Karma: 2
    • Verze Delphi: 10.4.
Re:Zatuhnutí hlavního vlákna při spuštění TTask.
« Odpověď #21 kdy: 24-02-2021, 14:00:17 »
Vyřešil jsem to tak, že jsem přepsal TTask na TThread.CreateAnonymousThread. Nainstaloval jsem několika uživatelům novou verzi a ty potvrdili, že problém s náhodným zatuhnutím aplikace je vyřešen.

Offline soko.ban

  • Mladík
  • **
  • Příspěvků: 55
  • Karma: 2
    • Verze Delphi: RAD Studio 12.1 (Začínal jsem s Delphi 2)
Re:Zatuhnutí hlavního vlákna při spuštění TTask.
« Odpověď #22 kdy: 24-02-2021, 21:28:47 »
No, zrovna včera jsem po dvoudenním bádání přepsal TTask na TThread.CreateAnonymousThread a vyřešil se tím problém s procesem, který zůstával viset po ukončení aplikace.
Mám z toho takový dost smíšený pocity. Jsem zvědavej co 10.4.2.