J3/06-329r1 Date: 16 November 2006 To: J3 From: Aleksandar Donev Subject: Clarifications for SYNC ALL/IMAGES and QUERY References: 06-007r1, resubmit of 06-286r1 Dependencies: None Following some comments from Van and discussion in subgroup B, I propose clarifications of text concerning SYNC IMAGES and QUERY. No technical change is made, merely clarifications. ------------------- Note 8.38 does not explain if there is a difference between SYNC IMAGES(*) being executed on all images and SYNC_ALL. Here is an attempt to make it more informative and clarify the reason for having both SYNC IMAGES(*) and SYNC ALL: [199:15+] In Note 8.38, replace the first three sentences with: "Execution of SYNC IMAGES (*) on all images has the same effect as execution of SYNC ALL on all images, but SYNC ALL might have better performance. SYNC IMAGES statements are not required to specify the entire image set, or even the same image set, on all images participating in the synchronization." Then split off "In the following example" as a separate paragraph. ------------------- The text describing QUERY and when it is satisfied etc. is very difficult to understand. This is an attempt to rewrite it: [200:9-201:4] Replace the three paragraphs with: A QUERY statement is <> if and only if it has no READY= specifier. A QUERY statement is <> on completion of its execution if and only if it is a blocking QUERY statement or it set the variable specified by its READY= specifier to true. Let Q_{M<-T} denote the number of times image M has completed the execution of a satisfied QUERY statement with a different image T in its image set. Completion of execution on image M of a blocking QUERY statement is delayed until, for each different T in its image set, N_{T->M} > Q_{M<-T}. During the execution on image M of a non-blocking QUERY statement, the becomes defined. The value becomes false if, for a different image T in the image set, N_{T->M} <= Q_{M<-T}. Otherwise, the value becomes true.