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í
×
    včera 18:11 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 2
    včera 16:33 | IT novinky

    Bylo oznámeno, že Qualcomm kupuje Arduino. Současně byla představena nová deska Arduino UNO Q se dvěma čipy: MPU Qualcomm Dragonwing QRB2210, na kterém může běžet Linux, a MCU STM32U585 a vývojové prostředí Arduino App Lab.

    Ladislav Hagara | Komentářů: 1
    včera 15:55 | Nová verze

    Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.14.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest v říjnu loňského roku přejmenovaný na Luanti.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | Nová verze

    Byla vydána nová stabilní verze 6.10 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    6.10. 23:55 | Komunita

    Ubuntu 26.04 LTS bude (𝕏) Resolute Raccoon (rezolutní mýval).

    Ladislav Hagara | Komentářů: 3
    6.10. 21:00 | Nová verze

    Netwide Assembler (NASM) byl vydán v nové major verzi 3.00. Přehled novinek v poznámkách k vydání v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    6.10. 20:11 | Komunita

    Linuxová distribuce Frugalware (Wikipedie) ke konci roku 2025 oficiálně končí.

    Ladislav Hagara | Komentářů: 0
    6.10. 17:22 | Nová verze

    Byla vydána nová verze 3.0.6 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP bude brzy k dispozici také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    6.10. 16:11 | IT novinky

    Americký výrobce čipů AMD uzavřel s americkou společností OpenAI smlouvu na několikaleté dodávky vyspělých mikročipů pro umělou inteligenci (AI). Součástí dohody je i předkupní právo OpenAI na přibližně desetiprocentní podíl v AMD.

    Ladislav Hagara | Komentářů: 1
    6.10. 12:22 | Nová verze Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (39%)
     (46%)
     (15%)
     (17%)
     (21%)
     (15%)
     (18%)
     (16%)
     (16%)
    Celkem 191 hlasů
     Komentářů: 12, poslední 4.10. 20:35
    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: 116×
    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.