Would you use a programming language with missing features?

Paulo Cavalcanti promac at gmail.com
Sun Jan 31 00:24:07 UTC 2010


On Sat, Jan 30, 2010 at 6:14 PM, Haïkel Guémar <karlthered at gmail.com> wrote:

> Le 30/01/2010 18:05, Paulo Cavalcanti a écrit :
> > It is not a pleasant situation when your code does not work because
> > the programming language does not do what it is supposed to.
> >
> > I am not raising any kind of rant here. I am just pointing that there is
> > a problem
> > that could have been already solved.
> >
>
> The use case provided there is broken by design, multiple threads try
> use the same Label object.
>
> http://mail.python.org/pipermail/python-bugs-list/2008-September/060101.html
>
>
Until here, we agree. Whenever a tkinter object is accessed from
another thread, the program will abort (when tcl is not built with thread
enabled).



>
> Since Tkinter is currently *not* thread-safe, you shouldn't expect this
> stuff working properly.
>

Surely, it will not be thread safe when tcl is not built with thread
support.



> Whether you compile tcl/tk with threads support doesn't matter, the
> problem *lies* in the python layer. It might work on your machine, but
> it's guaranteed to work elsewhere.
>

Maybe it is not 100% safe

http://mail.python.org/pipermail/tkinter-discuss/2008-October/001683.html

but I did not see a single example where it does not work when tcl is built
with thread enabled.

"Now what you can do when tcl/tk is compiled with --enable-threads and
python has thread support too is creating threads in python and
changing tk widgets in another thread. tkinter will schedule these
calls from other threads to run in the main thread (with a probability
to fail)."

I can not comment the "probability of fail". I would have to look at
tkinter code.



> http://mail.python.org/pipermail/tkinter-discuss/2008-October/001677.html
> Anyway, if you need a multithreaded Tkinter, then you'll have to build
> mtTkinter which is not packaged for Fedora at that time.
>

mtTkinter just makes the program work either with tcl thread enabled or not.
It is a very small module (160 lines):

Usage:

    import mtTkinter as Tkinter
    # Use "Tkinter." as usual.

or

    from mtTkinter import *
    # Use Tkinter module definitions as usual.

It also has a small test, which I am attaching a screen shot.

One can read:

mtTkinter works with or without Tcl thread support


Anyway, the discussion was good and maybe it is useful to other people too.

Thanks.

-- 
Paulo Roma Cavalcanti
LCG - UFRJ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.fedoraproject.org/pipermail/devel/attachments/20100130/de1751aa/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mtTkinter.png
Type: image/png
Size: 9435 bytes
Desc: not available
Url : http://lists.fedoraproject.org/pipermail/devel/attachments/20100130/de1751aa/attachment-0001.png 


More information about the devel mailing list