icetCreateContext -- creates a new context.
IceTContext icetCreateContext( IceTCommunicator comm );
The icetCreateContext function creates a new context, makes it current,
and returns a handle to the new context. The handle returned is of type
IceTContext. This is an opaque type that should not be handled
directly, but rather simply passed to other IceT functions.
Like OpenGL ,the IceT engine behaves like a large state machine. The
parameters for engine operation is held in the current state. The
entire state is encapsulated in a context. Each new context contains
its own state.
It is therefore possible to change the entire current state of IceT by
simply switch contexts. Switching contexts is much faster, and often
more convenient, than trying to change many state parameters.
It may be tempting to use contexts to run different IceT operations on
separate program threads. Although certainly possible, great care must
be taken. First of all, all threads will share the same context. Second
of all, IceT is not thread safe. Therefore, a multi-threaded program
would have to run all IceT commands in `critical sections' to ensure
that the correct context is being used, and the methods execute safely
icetCreateContext duplicates the communicator comm. Thus, to avoid
deadlocks on certain implementations (such as MPI), the user level
program should call icetCreateContext on all processes with the same
comm object at about the same time.
Copyright (C)2003 Sandia Corporation
Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
license for use of this work by or on behalf of the U.S. Government.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that this Notice and any statement
of authorship are reproduced on all copies.
icetDestroyContext(3), icetGetContext(3), icetSetContext(3),
IceT Reference January 31, 2007 icetCreateContext(3)