6.3.6 Working with threads
The getcontext() function accesses a different Context
object for each thread. Having separate thread contexts means that threads
may make changes (such as getcontext.prec=10 ) without interfering with
other threads.
Likewise, the setcontext() function automatically assigns its target
to the current thread.
If setcontext() has not been called before getcontext(),
then getcontext() will automatically create a new context for use
in the current thread.
The new context is copied from a prototype context called
DefaultContext. To control the defaults so that each thread will use the
same values throughout the application, directly modify the
DefaultContext object. This should be done before any threads are
started so that there won't be a race condition between threads calling
getcontext(). For example:
# Set applicationwide defaults for all threads about to be launched
DefaultContext.prec = 12
DefaultContext.rounding = ROUND_DOWN
DefaultContext.traps = ExtendedContext.traps.copy()
DefaultContext.traps[InvalidOperation] = 1
setcontext(DefaultContext)
# Afterwards, the threads can be started
t1.start()
t2.start()
t3.start()
. . .
Release 2.5.2, documentation updated on 21st February, 2008.
See About this document... for information on suggesting changes.
|