线程组地址空间(Threadgroup Address Space)
线程组地址空间用于为kernel函数的变量分配地址空间, 用threadgroup 修饰符定义的变量将被线程组中的所有线程共享. Graphics函数无法访问用threadgroup修饰的变量.
kernel函数中, 每个线程组就会分配独立的threadgroup变量, 其生命周期与该线程组相同.
下面的例子展示了threadgroup变量作为参数传递或者声明于kernel函数内部, 关于[[threadgroup(0)]]的说明请参看 Attribute Qualifiers to Locate Resources.
kernel void
my_func(threadgroup float *a [[ threadgroup(0) ]], ...)
{
// A float allocated in threadgroup address space
threadgroup float x;
// An array of 10 floats allocated in
// threadgroup address space
threadgroup float b[10];
...
}