abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    včera 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 1
    včera 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 1
    včera 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 7
    včera 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    17.4. 17:55 | IT novinky

    Společnost Volla Systeme stojící za telefony Volla spustila na Kickstarteru kampaň na podporu tabletu Volla Tablet s Volla OS nebo Ubuntu Touch.

    Ladislav Hagara | Komentářů: 3
    17.4. 17:44 | IT novinky

    Společnost Boston Dynamics oznámila, že humanoidní hydraulický robot HD Atlas šel do důchodu (YouTube). Nastupuje nová vylepšená elektrická varianta (YouTube).

    Ladislav Hagara | Komentářů: 1
    KDE Plasma 6
     (68%)
     (10%)
     (2%)
     (19%)
    Celkem 556 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: [Qt] Notifikacia o skonceni QSqlQuery

    19.10.2010 10:30 kovariadam | skóre: 12 | blog: biased | Košice/Brno
    [Qt] Notifikacia o skonceni QSqlQuery
    Přečteno: 96×
    Zdravim, Robim na serverovej aplikacii, ktora potrebuje spustat QSqlQuery z viacerych vstupov, vo viacerych vlaknach. Mam to urobene takto: DataSession: QObject - tato trieda(jedna vramci aplikacie) prida EfsSqlQuery do QQueue v QueryCommiteri: QThread(jeden vramci aplikacie), ma na starosti postupne vyberat dotazi z fronty a spustat ich na pozadi. EfsSqlQuery, QObject, obsahuje 1 QSqlQuery objekt, a jednu metodu, exec(), ktora spusti query volanim QSqlQuery.exec() a emituje signal commited(bool). Vyhodou tejto triedy oproti QSqlQuery je iba v tom, ze dokaze emitovat signal, kedze je potomkom QObject-u narozdiel od QSqlQuery.

    Signal chcem chytit takto, v inom(hlavnom) vlakne uz: connect(m_query, SIGNAL(commited(bool)), this, SLOT(process_stage_2(bool)));

    a potom zavolam: dataSession.commitQuery(m_query);

    dataSession ho prida do fronty queryCommiteru a ten ked dojde na to rada tak ma zavolat EfsSqlQuery.exec()

    Ten slot process_stage_2(bool) vsak nikdy neni zavolany.

    Pokusim sa pridat relevantny kod: Kod hlavneho vlakna:
    connect(m_query.data(), SIGNAL(commited(bool)), this, SLOT(process_stage_2(bool)));
     
    dataSession.commitQuery(m_query);
    

    DataSession:
    void sk_efs_server::DataSession::commitQuery(QSharedPointer<EfsSqlQuery> query)
    {
        sqlMutex->lock();
        sqlQueue->append(query);
        sqlMutex->unlock();
     
        sqlQueueFull->wakeAll();
    }
    

    QueryCommiter:

    void sk_efs_server::QueryCommiter::run()
    {
        QSharedPointer<EfsSqlQuery> query;
     
        forever
        {
            sqlMutex->lock();
            sqlQueueFull->wait(sqlMutex.data());
            query = sqlQueue->dequeue();
            sqlMutex->unlock();
     
            query->exec();
        }
     
        exec();
    }

    EfsSqlQuery:

    bool sk_efs_server::EfsSqlQuery::exec()
    {
        bool cted = m_query->exec();
     
        emit commited(cted);
     
        return cted;
    }

    Poznamka: Qt verzie 4.7, skusal som pri pripajani signalu connectom pridat aj argument Qt::QueuedConnection, nepomohlo to, ale malo by to byt aj tak default, ak je signal z ineho vlakna.

    Neviete mi prosim poradit preco ten slot neni nikdy zavolany?

    Dakujem

    Na otázku zatím nikdo bohužel neodpověděl.

    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.