---
name: "icetCreateContext"
section: "3"
platform: "linux"
package: "paraview"
version: "5.13.2+dfsg-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/icetCreateContext"
---

# icetCreateContext(3)

## NAME

**icetCreateContext -- creates a new context.**

## Synopsis

\#include \<IceT.h\>

| | | |
| --- | --- | --- |
| **IceTContext** **icetCreateContext**( | **IceTCommunicator** | *comm* ); |

## Description

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 switching contexts. Switching contexts is much faster, and often more convenient, than trying to change many state parameters.

## Errors

None.

## Warnings

None.

## Bugs

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 in general.

## Notes

**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

Copyright (C)2003 Sandia Corporation

Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software.

This source code is released under the New BSD License.

## See Also

[*icetDestroyContext*(3)](/icetDestroyContext/3.md), [*icetGetContext*(3)](/icetGetContext/3.md), [*icetSetContext*(3)](/icetSetContext/3.md), [*icetCopyState*(3)](/icetCopyState/3.md), [*icetGet*(3)](/icetGet/3.md)
