File: shmem_set_lock.3

package info (click to toggle)
openmpi 5.0.8-4
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 201,684 kB
  • sloc: ansic: 613,078; makefile: 42,353; sh: 11,194; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,179; python: 1,859; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (117 lines) | stat: -rw-r--r-- 2,958 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
.\" Man page generated from reStructuredText.
.
.TH "SHMEM_SET_LOCK" "3" "May 30, 2025" "" "Open MPI"
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
\fI\%shmem_set_lock\fP(3), \fI\%shmem_clear_lock\fP(3), \fI\%shmem_test_lock\fP(3) \-
Releases, locks, and tests a mutual exclusion memory lock.
.SH SYNOPSIS
.sp
C or C++:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
#include <mpp/shmem.h>

void shmem_clear_lock(volatile long *lock)

void shmem_set_lock(volatile long *lock)

int shmem_test_lock(volatile long *lock)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Fortran:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
INCLUDE "mpp/shmem.fh"

INTEGER lock, SHMEM_TEST_LOCK

CALL SHMEM_CLEAR_LOCK(lock)

CALL SHMEM_SET_LOCK(lock)

I = SHMEM_TEST_LOCK(lock)
.ft P
.fi
.UNINDENT
.UNINDENT
.SH DESCRIPTION
.sp
The \fI\%shmem_set_lock\fP routine sets a mutual exclusion lock after waiting
for the lock to be freed by any other PE currently holding the lock.
Waiting PEs are assured of getting the lock in a first\-come,
first\-served manner.
.sp
The \fI\%shmem_clear_lock\fP routine releases a lock previously set by
\fI\%shmem_set_lock\fP after ensuring that all local and remote stores initiated
in the critical region are complete.
.sp
The \fI\%shmem_test_lock\fP function sets a mutual exclusion lock only if it is
currently cleared. By using this function, a PE can avoid blocking on a
set lock. If the lock is currently set, the function returns without
waiting. These routines are appropriate for protecting a critical region
from simultaneous update by multiple PEs. They accept the following
arguments:
.INDENT 0.0
.TP
.B lock
A symmetric data object that is a scalar variable or an array of
length 1. This data object must be set to 0 on all processing
elements (PEs) prior to the first use. lock must be of type integer.
If you are using Fortran, it must be of default kind.
.UNINDENT
.SH NOTES
.sp
The term symmetric data object is defined on \fIintro_shmem\fP(3).
.SH RETURN VALUES
.sp
The \fI\%shmem_test_lock\fP function returns 0 if the lock was originally
cleared and this call was able to set the lock. A value of 1 is returned
if the lock had been set and the call returned without waiting to set
the lock.
.sp
\fBSEE ALSO:\fP
.INDENT 0.0
.INDENT 3.5
\fIintro_shmem\fP(3)
.UNINDENT
.UNINDENT
.SH COPYRIGHT
2003-2025, The Open MPI Community
.\" Generated by docutils manpage writer.
.