UPC 语言中的指针类型
UPC 语言把数据分为共享类型和私有类型。一个指针所指向的数据可能为共享类型或者私有类型,并且指针本身也可以是共享类型或者私有类型。因此 UPC 语言中的指针共有以下四种类型,参见图 1
指向私有数据私有类型指针 指向">共享数据私有类型指针 指向私有数据共享类型指针 指向共享数据共享类型指针
图 1. UPC 语言指针类型
指向私有数据私有类型指针
如图 1 中的 p1 指针,是一个指向私有数据的私有类型指针。该指针类似于 C 语言中的普通的指针。当声明一个这样的指针时,UPC 语言会在每个线程的私有内存中为该指针的副本分配内存,即每个线程拥有该指针的一个副本。 该指针可以用来访问一个线程的私有数据。例如,下面的语句声明了一个指向私有数据私有类型指针:
int *p1;
清单 1. 指向私有数据私有类型指针
# include <upc.h> // 假定由 2 个线程来运行该程序 # include <stdio.h> # include <<stdlib.h> int a=-1; void main() { int *p1; if(MYTHREAD == 1) { // p1 指向动态分配的私有内存。 p1=malloc(1*sizeof(int)); *p1=1; } else { // p1 指向变量 a. p1=&a; } printf("Th=%d,*p1=%d\n",MYTHREAD,*p1); }
图 2. 清单 1 程序内存视图
图 3:清单 1 程序输出
时间: 2025-01-27 13:43:02