From pykde Fri Jun 02 09:43:09 2006 From: Toby Dickenson Date: Fri, 02 Jun 2006 09:43:09 +0000 To: pykde Subject: Re: [PyKDE] twisted and PyQt4 Message-Id: <200606021043.09127.tdickenson () devmail ! geminidataloggers ! co ! uk> X-MARC-Message: https://marc.info/?l=pykde&m=114924159601183 On Friday 02 June 2006 09:37, scalet@yebu.de wrote: > > On Thursday 01 June 2006 11:24, scalet@yebu.de wrote: > > this approach on Windows. Your main thread normally spends its time > > running > > the Qt main loop, however on Windows it is quite legitimate for library > > functions to briefly run their own message loop. Examples include standard > > dialog boxes (file chooser, font chooser etc), MessageBox, and > > I do not have any like problems, since I use qt in a very special > (embedded) environment. No real qt-dialogs (but simulating my own), > no message-boxes, not even mouse-handling, just hard-key handling. > > But the problems you describe interested me, and so I did setup a > message box. When this box comes up, incoming network traffic is > processed normally (I got cyclic data packet into my app), I guess you used a Qt message box, rather than a win32 message box. (or maybe I am misremembering the exact details of this problem.... I certainly havent tested this recently) > only > if I _click_ into the caption bar on top of the message box, traffic > processing stops as long as mouse button one is pressed. And that is > bad. You mean click and hold, to drag the window to a different position? Ive just tried this here (with ThreadedSelectReactor) and it did not block. > BUT: Doesn't that mean, that twisted's asynchronous one-loop-only, > single-threaded model in combination with _any_ graphical user > interface (not just qt's) does not make that much sense. It is probably not the best way to achieve the ultimate high performance network application, but there is no reason for it to suck. The gui libraries will be ensuring that the GUI remains adequately responsive, and there is no reason for the twisted reactor to be significantly less responsive than the gui. The reactor just needs to uses the same mechanisms to trigger twisted event handlers as Qt uses to trigger the gui event handlers. On win32 this means message passing. Windows will be running a nested message loop using GetMessage/DispatchMessage while you are dragging the window around. > I did not look into that yet, but at first it seems, that the > major advantage of twisted's model (avoiding the hassle to > synchronize between network-thread and gui-thread) is gone then. No, its better than that! ThreadedSelectReactor lets your application code remain in that wonderfully simple single-threaded world. All twisted and PyQt application code runs in the Qt main thread. The fact that it calls select in a second thread is an encapsulated implementation detail of the reactor class. Hmmmm, there are some other issues scattered throughout the twisted and PyQt list archives, but I cant find any consolidated documentation. I should fix that..... -- Toby Dickenson _______________________________________________ PyKDE mailing list PyKDE@mats.imk.fraunhofer.de http://mats.imk.fraunhofer.de/mailman/listinfo/pykde