共用方式為


array_view 類別

代表保留於另一個容器裡的資料在 N 維下的檢視。

template <
   typename _Value_type,
   int _Rank = 1
>
class array_view : public _Array_view_base<_Rank, sizeof(_Value_type)/sizeof(int)>;

template <
   typename _Value_type,
   int _Rank
>
class array_view<const _Value_type, _Rank> : public _Array_view_base<_Rank, sizeof(_Value_type)/sizeof(int)>;

參數

  • _Value_type
    array_view 物件內項目的資料類型。

  • _Rank
    array_view 物件的順位。

Members

公用建構函式

名稱

描述

array_view::array_view 建構函式

初始化 array_view 類別的新執行個體。 array<T,N> 沒有預設的建構函式。 所有建構函式都受到限制,只能在 CPU 上執行,而無法在 Direct3D 目標上執行。

array_view::~array_view 解構函式

終結 array_view 物件。

公用方法

名稱

描述

array_view::copy_to 方法

藉由呼叫 copy(*this, dest),將 array_view 物件的內容複製到指定的目的端。

array_view::data 方法

傳回 array_view的原始資料的指標。

array_view::discard_data 方法

捨棄做為此檢視基礎的目前資料。

array_view::get_extent 方法

傳回 array_view 物件的範圍物件。

array_view::get_ref 方法

傳回索引項目的參考。

array_view::get_source_accelerator_view 方法

傳回 array_view 資料來源所位在的 accelerator_view

array_view::refresh 方法

告知 array_view 物件所繫結的記憶體中已從 array_view 介面外修改。 呼叫此方法會讓所有快取的資訊失效。

array_view::reinterpret_as 方法

array_view 會傳回包含二維字串陣列的物件。

array_view::section 方法

傳回指定之來源的子區段 array_view 物件,且可選擇性指定範圍。

array_view::synchronize 方法

同步處理對 array_view 物件所做的任何修改,使其還原為來源資料。

array_view::synchronize_async 方法

非同步地將對 array_view 所做的任何修改與其來源資料同步處理。

array_view::synchronize_to 方法

將對 array_view 物件進行的任何修改同步處理至指定的 accelerator_view

array_view::synchronize_to_async 方法

非同步會將對 array_view 物件進行的任何修改同步處理至指定的 accelerator_view

array_view::view_as 方法

利用此 array_view 物件的資料產生一個不同陣序的 array_view 物件。

公用運算子

名稱

描述

array_view::operator() 運算子

傳回由一或多個參數指定的項目的值。

array_view::operator[] 運算子

傳回參數指定的項目。

array_view::operator= 運算子

將指定之 array_view 物件的內容複製到這個物件。

公用常數

名稱

描述

array_view::rank 常數

儲存 array_view 物件的順位。

資料成員

名稱

描述

array_view::extent 資料成員

取得定義 array_view 物件圖形的 extent 物件。

array_view::source_accelerator_view 資料成員

取得 array_view 資料來源所位在的 accelerator_view

array_view::value_type 資料成員

array_view 和繫結陣列的實值類型。

備註

array_view 類別代表深入 array 物件或array物件子區段中所含資料的檢視。

您可以存取來源資料所在的 array_view 物件 (本機) 或不同的加速器或連貫網域 (遠端)。 當您以遠端方式存取物件時,檢視依需要複製和快取。 除了自動快取的效果不同以外,array_view 物件與 array 物件的效能設定檔相同。 當您透過檢視表存取資料時,效能會稍微受到影響。

有三個遠端使用情節:

  • 系統記憶體指標的檢視是透過對加速器的 parallel_for_each 呼叫來傳遞,並在加速器上進行存取。

  • 位於加速器之陣列的檢視是藉由對另一個加速器的 parallel_for_each 呼叫來傳遞,並在那裡進行存取。

  • 位於加速器之陣列的檢視是在 CPU 上進行存取。

在任何一種情況下,執行階段會將參考的檢視複製到遠端位置,如果由 array_view 物件的呼叫進行修改,則複製回本機位置。 執行階段可能會最佳化重新複製變更的流程、可能只會複製變更的項目,也可能會一併複製未變更的部分。 某個資料來源的重疊 array_view 物件沒有在遠端位置保證維護參考完整性。

您必須同步處理對相同資料來源的任何多執行緒存取。

執行階段會對有關快取 array_view 物件中資料做出下列保證:

  • 對其中 array 物件和 array_view 物件的所有適當同步存取 (依照程式順序) 會遵守循序的發生次序 (Happens-Before) 關聯性。

  • 在單一 array 物件上,對相同加速器之重疊 array_view 物件的所有適當同步存取是透過 array 物件指定別名。 它們會引發整個 occurs-before 關聯性,該關聯性會遵守程式順序。 沒有快取。 如果 array_view 物件在不同的加速器上執行,則存取順序尚未定義,因此建立競爭條件。

當您使用系統記憶體中的指標建立 array_view 物件時,只能透過 array_view 指標變更檢視 array_view 物件。 或者,您必須呼叫以附加至系統指標的其中一個 refresh()array_view 物件,如果基礎原生記憶體直接變更,而不是透過 array_view 物件。

任一動作都會告知 array_view 物件,基礎原生記憶體發生變更,以及任何位於加速器上的複本皆已過時。 如果您遵循這些方針,提供給資料平行陣列檢視的指標檢視會是相同的。

繼承階層架構

_Array_view_shape

_Array_view_base

array_view

需求

**標頭:**amp.h

**命名空間:**並行

請參閱

參考

Concurrency 命名空間 (C++ AMP)