[Python-Dev] PEP needed? Introducing Tcl objects

Jeff Hobbs JeffH@ActiveState.com
2002年2月20日 10:33:25 -0800


> So if TCL_DONT_WAIT isn't set, it will block; if it is, it will
> busy-wait. Looks like we lose either way.
>> In-between, it invokes the setupProcs of each input source, so that
> they can set a maxblocktime, but I don't think _tkinter should hack
> itself into that process.

That's correct - I should have looked a bit more into what I did
before (I was always tying in another GUI's event loop). However,
I don't see why you should not consider the extra event source.
Tk uses this itself for X. It would be something like:
[in tk setup]
 Tcl_CreateEventSource(TkinterSetupProc, NULL, NULL);
/*
 *----------------------------------------------------------------------
 *
 * TkinterSetupProc --
 *
 *	This procedure implements the setup part of the Tkinter
 *	event source. It is invoked by Tcl_DoOneEvent before entering
 *	the notifier to check for events on all displays.
 *
 * Results:
 *	None.
 *
 * Side effects:
 *	The maximum block time will be set to 20000 usecs to ensure that
 *	the notifier returns control to Tcl.
 *
 *----------------------------------------------------------------------
 */
static void
TkinterSetupProc(clientData, flags)
 ClientData clientData;	/* Not used. */
 int flags;
{
 static Tcl_Time blockTime = { 0, 20000 };
 Tcl_SetMaxBlockTime(&blockTime);
}
In fact, you can look at tk/unix/tkUnixEvent.c to see something
similar already done in Tk.
> About thread-safety: Is Tcl 8.3 thread-safe in its standard
> installation, so that we can just use it from multiple threads? If
> not, what is the compile-time check to determine whether it is
> thread-safe? If there is none, I really don't see a solution, and the

You would compile with --enable-threads (both Tcl and Tk).
Jeff

AltStyle によって変換されたページ (->オリジナル) /