Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Qt: threadide vaheline suhtlus märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Bssldr
HV kasutaja

liitunud: 05.12.2009




sõnum 14.06.2010 21:14:55 Qt: threadide vaheline suhtlus vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 15.06.2010 10:17:16 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Bssldr
HV kasutaja

liitunud: 05.12.2009




sõnum 15.06.2010 21:59:17 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Ho Ho
HV Guru
Ho Ho

liitunud: 16.02.2002




sõnum 16.06.2010 09:51:59 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Qt: threadide vaheline suhtlus
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
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.