第五十章 Caché 函數大全 $PREFETCHOFF 函數
結束對全局變量的預取。
大綱
$PREFETCHOFF(gref,gref2)
參數
- gref 可選-全局變量引用。
- gref2 可選-用於建立範圍的全局變量引用。
描述
$PREFETCHOFF
關閉由$PREFETCHON
建立的全局節點的預取。
$PREFETCHOFF
有三種形式:
-
$PREFETCHOFF()
關閉爲當前進程建立的所有預取。 -
$PREFETCHOFF(gref)
關閉gref節點及其所有後代的預取。 gref值必須與$PREFETCHON
值完全對應。 -
$PREFETCHOFF(gref,gref2)
關閉從gref到gref2範圍內的節點的預取。 gref和gref2必須是相同全局節點。 gref和gref2值必須與$PREFETCHON
值完全對應。不能關閉部分值範圍。
成功完成後,$PREFETCHOFF()
返回0。即使沒有預取將關閉,它也返回0。
成功完成後,$PREFETCHOFF(gref)
和$PREFETCHOFF(gref,gref2)
返回由逗號分隔的六個整數的字符串。這六個值是:預取的塊數,執行的I / O數,預取的操作數,預取的磁盤時間的毫秒數,後臺作業:預取的塊數和後臺作業:執行的I / O數。
失敗時,所有形式的$PREFETCHOFF
都會返回-1。如果沒有對應的$PREFETCHON
與指定的全局範圍或全局範圍完全匹配,或者指定的預取全局範圍或全局範圍已關閉,則$PREFETCHOFF(gref)
和$PREFETCHOFF(gref,gref2)
返回-1。
參數
gref
全局引用,可以是全局引用,也可以是過程專用的全局引用。在關閉預取時無需定義全局。
gref2
用於建立gref範圍的全局引用。因此,gref2必須是與gref在同一全局樹中較低的全局節點。
示例
以下示例建立兩個預取,然後分別關閉它們:
// d ##class(PHA.TEST.Function).PREFETCHOFF()
ClassMethod PREFETCHOFF()
{
SET ret=$PREFETCHON(^a)
IF ret=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET ret2=$PREFETCHON(^b)
IF ret2=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET retoff=$PREFETCHOFF(^a)
IF retoff'=-1 { WRITE !,"prefetch turned off. Values:",retoff }
ELSE { WRITE !,"prefetch not turned off" }
SET retoff2=$PREFETCHOFF(^b)
IF retoff2'=-1 { WRITE !,"prefetch turned off. Values:",retoff2 }
ELSE { WRITE !,"prefetch not turned off" }
}
DHC-APP>d ##class(PHA.TEST.Function).PREFETCHOFF()
prefetch established
prefetch established
prefetch turned off. Values:0,0,0,0,0,0
prefetch turned off. Values:0,0,0,0,0,0
以下示例建立兩個預取,然後關閉當前進程的所有預取:
/// d ##class(PHA.TEST.Function).PREFETCHOFF1()
ClassMethod PREFETCHOFF1()
{
SET ret=$PREFETCHON(^a)
IF ret=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET ret2=$PREFETCHON(^b)
IF ret2=1 { WRITE !,"prefetch established" }
ELSE { WRITE !,"prefetch not established" }
SET retoff=$PREFETCHOFF()
IF retoff=0 { WRITE !,"all prefetches turned off" }
ELSE { WRITE !,"prefetch not turned off" }
}
DHC-APP> d ##class(PHA.TEST.Function).PREFETCHOFF1()
prefetch established
prefetch established
all prefetches turned off