abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    dnes 16:00 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 22:00 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 13:55 | Komunita

    Na itch.io probíhá Linux Game Jam 2023. Zapojit se a přihlásit hru běžící na Linuxu lze do 6. června do 01:59. Zahrát si lze hry z loňského ročníku.

    Ladislav Hagara | Komentářů: 3
    27.5. 18:55 | IT novinky

    Na Steamu lze získat zdarma počítačové hry Warhammer 40,000: Gladius - Relics of War a Hue. Na Epic Games Storu počítačovou hru Fallout: New Vegas - Ultimate Edition.

    Ladislav Hagara | Komentářů: 9
    26.5. 08:00 | Komunita

    WordPress (Wikipedie), open source systém pro správu webového obsahu (CMS), zítra slaví 20 let. První verze byla vydána 27. května 2003.

    Ladislav Hagara | Komentářů: 43
    25.5. 21:44 | Nová verze

    Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript, TypeScript a WebAssembly, bylo vydáno ve verzi 1.34. Přehled novinek v poznámkách k vydání. Od verze 1.6 lze pomocí "deno compile" sestavit ze zdrojových kódů binární spustitelný soubor. Nově "deno compile" podporuje také npm balíčky.

    Ladislav Hagara | Komentářů: 9
    25.5. 20:22 | Komunita

    Aktuálně posledním 14. open source filmem od Blender Studia je CHARGE (YouTube). Dokončuje se 15. film Pet Projects. Začíná se pracovat na 16. filmu s pracovním názvem Project Gold.

    Ladislav Hagara | Komentářů: 6
    25.5. 13:33 | Komunita

    Thunderbird má nové logo.

    Ladislav Hagara | Komentářů: 32
    24.5. 21:44 | Komunita

    Není zcela jednoduché rozchodit v Linuxu kameru IPU6 umístěnou v noteboocích Dell Latitude 9420, Lenovo ThinkPad X1 Carbon Gen 10, Lenovo ThinkPad X1 Nano Gen 2, Lenovo ThinkPad X1 Yoga Gen 7 a dalších. Ve Fedora Linuxu je to teď snadnější. Hans de Goede informuje o podpoře kamery IPU6 ve Fedora Linuxu pomocí balíčků umístěných na RPM Fusion.

    Ladislav Hagara | Komentářů: 24
    24.5. 17:33 | IT novinky

    Společnost AMD na YouTube představila a oznámila prodej grafické karty Radeon RX 7600. Cena začíná na 269 dolarech.

    Ladislav Hagara | Komentářů: 0
    Obnovovací frekvenci obrazovky (LCD) preferuji
     (72%)
     (22%)
     (4%)
     (2%)
    Celkem 747 hlasů
     Komentářů: 13, poslední 25.5. 07:25
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: QThread

    Jardík avatar 2.6.2010 00:57 Jardík | skóre: 40 | blog: jarda_bloguje
    QThread
    Přečteno: 302×
    Mám nějaký QThread:
    class MyThread: public QThread
    {
      Q_OBJECT
    protected:
      virtual void run()
      {
        /* blabla */
      }
    };
    
    A nějaký další objekt
    class MyObj: public QObject
    {
      Q_OBJECT
      MyThread *th;
    public:
      MyObj()
      {
        th = new MyThread();
        connect(th, SIGNAL(finished()), SLOT(onThreadFinished()));
        th->start();
      }
      
      ~MyObj()
      {
        if (th)
        {
          th->wait();
          delete th;
        }
      }
    protected slots:
      void onThreadFinished()
      {
        th->wait();
        delete th;
        th = 0;
      }
    };
    
    Dotazy:
    • onThreadFinished() bude zavolán z threadu, kde je vytvořen MyObj?
    • Pokud bude zavolán destruktor objektu dříve, než skončí thread, a já tam zavolám wait() a pak objekt zničím, předpokládám správně, že i když thread signál emitne, tak si při zničení uklidí vyslaný signál do jiného threadu a onThreadFinished() tedy zavolán nebude?
    Věřím v jednoho Boha.

    Odpovědi

    Jardík avatar 2.6.2010 01:01 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: QThread
    A ještě vlastně jeden dotaz. Pokud bych zavolal disconnect až poté, co by thread emitnul signál, ale před tím, než by byl doručen, bude doručen, nebo ne?
    Věřím v jednoho Boha.
    2.6.2010 02:19 Murry | skóre: 16 | Brno
    Rozbalit Rozbalit vše Re: QThread

    onThreadFinished() bude zavolán z threadu, kde je vytvořen MyObj?

    onThreadFinished() bude zavolán pokud metoda MyThread->run doběhne. (Tzn. podle toho co máš za kód u  /* blabla */ )

    Pokud bude zavolán destruktor objektu dříve, než skončí thread, a já tam zavolám wait() a pak objekt zničím, předpokládám správně, že i když thread signál emitne, tak si při zničení uklidí vyslaný signál do jiného threadu a onThreadFinished() tedy zavolán nebude?

    Nejsem si jist, zda-li je to či ono garantováno, v dokumentaci píší (pokud si pamatuji) něco jako že to není doporučeno spíš se má volat deleteLater().

    Jardík avatar 2.6.2010 02:26 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: QThread
    spíš se má volat deleteLater()
    Jenže kdybych zavolal deleteLater(), tak by se mi ta metoda mohla zavolat s neplatným this pointerem (?)... nebo ten objekt odpojí při destrukci signál a ten se pak nezavolá (i když byl už vyslán)?
    Věřím v jednoho Boha.
    6.6.2010 15:46 Murry | skóre: 16 | Brno
    Rozbalit Rozbalit vše Re: QThread
    Neplatný pointer ne-e. Pokud object není platný už neregeruje signál.
    6.6.2010 15:48 Murry | skóre: 16 | Brno
    Rozbalit Rozbalit vše Re: QThread
    Tím "není platný" myslím pokud už není v paměti.
    7.6.2010 17:17 Sten
    Rozbalit Rozbalit vše Re: QThread
    onThreadFinished() bude zavolán z threadu, kde je vytvořen MyObj?

    Ano, sloty běží ve vlákně, ve kterém se nachází příjemce (ve výchozím módu funkce connect, lze změnit parametrem type, viz dokumentace). onThreadFinished je emitováno threadem poté, co opustí metodu run, ale zde zpracováno až poté, co thread objektu MyObj se dostane do event loopu (tzn. opustí metody objektu MyObj).

    Pokud bude zavolán destruktor objektu dříve, než skončí thread, a já tam zavolám wait() a pak objekt zničím, předpokládám správně, že i když thread signál emitne, tak si při zničení uklidí vyslaný signál do jiného threadu a onThreadFinished() tedy zavolán nebude?

    Po vložení signálu do mezi-threadové queue se signál nezruší smazáním objektu, který jej vyslal. onThreadFinished ale nebude doručen, protože bude příjemce zdestruován dříve, než bude možné ten signál doručit.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.