praegune kellaaeg 21.06.2025 22:17:44
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Bssldr
HV kasutaja
liitunud: 05.12.2009
|
14.06.2010 21:14:55
Qt: threadide vaheline suhtlus |
|
|
Hetkel on tekkinud järgmine probleem:
Tegemist on GUI programmiga, milles GUI jookseb main threadis ning QTcpServer teises threadis(uue threadi run() meetodis on kutsutud this->exec()). Nüüd oleks vaja GUIst kontrollida, millal server kuulab uusi ühendusi ja millal mitte(QTcpServer::listen()). Kuna aga selle funktsiooni kutsumine tekitab uued child objektid QTcpServer objektile, siis Qt seda ei luba, kuna need child objektid tuleks luua selles threadis, kus QTcpServer jookseb(aga funktsioon kutsutakse main threadist).
Kuidas seda olukorda lahendada?
Edit:
Leidsin lahenduse. Tuleb kasutada SIGNAL/SLOT ühendusi ühenduse tüübiga Qt::QueuedConnection ning main threadis loodud QThread objekt liigutada sellesse threadi, mille liigutatav QThread objekt alustas.
Kui kellelgi on mõni teistsugune lahendus välja pakkuda, siis sooviks sellest kuulda.
|
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
15.06.2010 10:17:16
|
|
|
Alternatiivselt peaks saama serveri oleku kontrolli tehtud ka nii, et serverit jooksutav thread omab Atomic tüüpi lipukest mida siis saab kontrollida teisest threadist otse ilma signaalide-slotideta.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
Bssldr
HV kasutaja
liitunud: 05.12.2009
|
15.06.2010 21:59:17
|
|
|
Ho Ho kirjutas: |
Alternatiivselt peaks saama serveri oleku kontrolli tehtud ka nii, et serverit jooksutav thread omab Atomic tüüpi lipukest mida siis saab kontrollida teisest threadist otse ilma signaalide-slotideta. |
Heidan ka sellele pilgu peale. Olen tähele pannud, et tead Qt-st üsna palju. Kas oskad midagi öelda event loopi efektiivsuse kohta? Kas võib olla, et ilma event loopita lahendatud server on kiirem?
|
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
16.06.2010 09:51:59
|
|
|
Pole väga suuri ja suurt kiirust vajavaid süsteeme QT's valmis kirjutanud kuid kahtlen üsna sügavalt, et event loop'i (mitte) kasutamine asja aeglaseks teeks. Pigem võtab ikka ressursse konkreetsete klientidega majandamine kui nende klientidega ühenduste loomine. Igal juhul ei tasu hakata optimeerimisega tegelema enne, kui on näha et kiirusega probleeme on ning siis hakata vaatama mis täpselt võtab ressursse. Niisama umbes suvalisi kohti optimeerida üritades kulub valdavalt aur mõttetuste peale.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|