---
title: aclrtSetCurrentContext
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/API/runtimeapi/aclcppdevg_03_0061.html
sourcePath: /source/zh/CANNCommunityEdition/920beta1/API/runtimeapi/aclcppdevg_03_0061.html
indexId: 4b269e3af6d1fdbfb92b35b166267bb9bab349dc2ebca33c6aa89b29f0559cd679
---
# aclrtSetCurrentContext

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Ascend 950PR / Ascend 950DT | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 功能说明

设置线程的Context。


#### 函数原型

```
aclError aclrtSetCurrentContext(aclrtContext context)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| context | 输入 | 指定线程当前的Context。类型定义请参见aclrtContext。 |


#### 返回值说明

返回0表示成功，返回其他值表示失败，请参见aclError。


#### 约束说明

- 支持以下场景：

  - 如果在某线程（例如：thread1）中调用    aclrtCreateContext
接口显式创建一个Context（例如：ctx1），则可以不调用aclrtSetCurrentContext接口指定该线程的Context，系统默认将ctx1作为thread1的Context。
  - 如果没有调用    aclrtCreateContext
接口显式创建Context，则系统将默认Context作为线程的Context，此时，不能通过    aclrtDestroyContext
接口来释放默认Context。
  - 如果多次调用aclrtSetCurrentContext接口设置线程的Context，以最后一次为准。
- 若给线程设置的Context所对应的Device已经被复位，则不能将该Context设置为线程的Context，否则会导致业务异常。
- 推荐在某一线程中创建的Context，在该线程中使用。若在线程A中调用  aclrtCreateContext
接口创建Context，在线程B中使用该Context，则需由用户自行保证两个线程中同一个Context下同一个Stream中任务执行的顺序。
- 调用aclrtSetCurrentContext接口通过切换Context时，如果新Context与当前Context所属的Device不同时，Device也会随之切换。
