J3/06-329 Date: 27 October 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. If one image executes SYNC ALL then all images are required to execute SYNC ALL because it causes all images to wait for each other, but it is not necessary for all images to execute SYNC IMAGES because 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. If image A executes SYNC IMAGES and specifies image B, even indirectly by way of SYNC IMAGES (*), then image B is required to execute SYNC IMAGES and specify image A, perhaps but not necessarily also indirectly by way of SYNC IMAGES (*). 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 blocking if and only if it has no READY= specifier. A QUERY statement is satisfied 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.