[Bug 560787] New: Review Request: python-mtTkinter - A thread-safe version of Tkinter

bugzilla at redhat.com bugzilla at redhat.com
Mon Feb 1 20:32:04 UTC 2010


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug.

Summary: Review Request: python-mtTkinter - A thread-safe version of Tkinter

https://bugzilla.redhat.com/show_bug.cgi?id=560787

           Summary: Review Request: python-mtTkinter - A thread-safe
                    version of Tkinter
           Product: Fedora
           Version: rawhide
          Platform: All
        OS/Version: Linux
            Status: NEW
          Severity: medium
          Priority: medium
         Component: Package Review
        AssignedTo: nobody at fedoraproject.org
        ReportedBy: promac at gmail.com
         QAContact: extras-qa at fedoraproject.org
                CC: notting at redhat.com, fedora-package-review at redhat.com
   Estimated Hours: 0.0
    Classification: Fedora


Spec URL: 

http://orion.lcg.ufrj.br/RPMS/SPECS/python-mtTkinter.spec

SRPM URL: 

http://orion.lcg.ufrj.br/RPMS/src/python-mtTkinter-0.3-1.fc12.src.rpm

Description:

Although Tkinter is technically thread-safe
(assuming Tk is built with --enable-threads),
practically speaking there are still problems when used in multithreaded
Python applications.  The problems stem from the fact that the _tkinter
module attempts to gain control of the main thread via a polling technique
when processing calls from other threads.  If it succeeds, all is well.
If it fails (i.e., after a timeout), the application receives an exception
with the message: "RuntimeError: main thread is not in main loop".
There is no way to tell when this might happen, so calling Tk routines
from multiple threads seems to be problematic at best.

The mtTkinter module solves this problem by modifying some Tkinter
module definitions (in memory). The modified code intercepts
out-of-thread Tkinter calls and marshals them through a queue which
is read by an 'after' event running periodically in the main loop.
This is similar to the technique used in many other platforms
(e.g., .NET's InvokeRequired/Invoke mechanism).
The technique used in mtTkinter is exception-safe as well,
marshaling exceptions through a response queue back to the caller's thread.

-- 
Configure bugmail: https://bugzilla.redhat.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the package-review mailing list