Skip to content
Newer
Older
100644 1211 lines (409 sloc) 30.6 KB
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1 Module gproc
2 ============
3
4
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
5 <h1>Module gproc</h1>
6
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
7 * [Description](#description)
8 * [Data Types](#types)
9 * [Function Index](#index)
10 * [Function Details](#functions)
023e927 don't call is_process_alive on remote pids (thks sg2342)
Ulf Wiger authored
11
12
669e1b2 added performance tuning options
Ulf Wiger authored
13 Extended process registry
14 This module implements an extended process registry.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
15
16
17
023e927 don't call is_process_alive on remote pids (thks sg2342)
Ulf Wiger authored
18 __Behaviours:__ [`gen_server`](gen_server.md).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
19
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
20 __Authors:__ Ulf Wiger ([`ulf.wiger@erlang-consulting.com`](mailto:ulf.wiger@erlang-consulting.com)).
21
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
22 <h2><a name="description">Description</a></h2>
23
24
25
26
27
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
28 For a detailed description, see
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
29 [erlang07-wiger.pdf](erlang07-wiger.pdf).
30
669e1b2 added performance tuning options
Ulf Wiger authored
31
32
33 <h2>Tuning Gproc performance</h2>
34
35
36
37
38
39 Gproc relies on a central server and an ordered-set ets table.
40 Effort is made to perform as much work as possible in the client without
41 sacrificing consistency. A few things can be tuned by setting the following
42 application environment variables in the top application of `gproc`
43 (usually `gproc`):
44
45 * `{ets_options, list()}` - Currently, the options `{write_concurrency, F}`
46 and `{read_concurrency, F}` are allowed. The default is
47 `[{write_concurrency, true}, {read_concurrency, true}]`
48 * `{server_options, list()}` - These will be passed as spawn options when
49 starting the `gproc` and `gproc_dist` servers. Default is `[]`. It is
50 likely that `{priority, high | max}` and/or increasing `min_heap_size`
51 will improve performance.
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
52
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
53
4ffd1fa added surrender/2
Ulf Wiger authored
54
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
55 <h2><a name="types">Data Types</a></h2>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
56
57
58
59
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
60
4ffd1fa added surrender/2
Ulf Wiger authored
61 <h3 class="typedecl"><a name="type-context">context()</a></h3>
62
63
64
65
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
66 <pre>context() = {<a href="#type-scope">scope()</a>, <a href="#type-type">type()</a>} | <a href="#type-type">type()</a></pre>
67
4ffd1fa added surrender/2
Ulf Wiger authored
68
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
69 {'all','all'} is the default
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
70
71
72
4ffd1fa added surrender/2
Ulf Wiger authored
73 <h3 class="typedecl"><a name="type-headpat">headpat()</a></h3>
74
75
76
77
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
78 <pre>headpat() = {<a href="#type-keypat">keypat()</a>, <a href="#type-pidpat">pidpat()</a>, ValPat}</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
79
80
81
82 <h3 class="typedecl"><a name="type-key">key()</a></h3>
83
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
84
85
86
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
87 <pre>key() = {<a href="#type-type">type()</a>, <a href="#type-scope">scope()</a>, any()}</pre>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
88
89
90
4ffd1fa added surrender/2
Ulf Wiger authored
91 <h3 class="typedecl"><a name="type-keypat">keypat()</a></h3>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
92
93
94
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
95
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
96 <pre>keypat() = {<a href="#type-sel_type">sel_type()</a> | <a href="#type-sel_var">sel_var()</a>, l | g | <a href="#type-sel_var">sel_var()</a>, any()}</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
97
98
99
100 <h3 class="typedecl"><a name="type-pidpat">pidpat()</a></h3>
101
102
103
104
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
105 <pre>pidpat() = pid() | <a href="#type-sel_var">sel_var()</a></pre>
4ffd1fa added surrender/2
Ulf Wiger authored
106
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
107
108 sel_var() = DollarVar | '_'.
109
110
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
111 <h3 class="typedecl"><a name="type-reg_id">reg_id()</a></h3>
4ffd1fa added surrender/2
Ulf Wiger authored
112
113
114
115
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
116 <pre>reg_id() = {<a href="#type-type">type()</a>, <a href="#type-scope">scope()</a>, any()}</pre>
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
117
118
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
119
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
120 <h3 class="typedecl"><a name="type-scope">scope()</a></h3>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
121
122
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
123
124
125 <pre>scope() = l | g</pre>
126
127
128 l = local registration; g = global registration
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
129
130
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
131
4ffd1fa added surrender/2
Ulf Wiger authored
132 <h3 class="typedecl"><a name="type-sel_pattern">sel_pattern()</a></h3>
133
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
134
135
136
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
137 <pre>sel_pattern() = [{<a href="#type-headpat">headpat()</a>, Guards, Prod}]</pre>
138
139
140
141 <h3 class="typedecl"><a name="type-sel_scope">sel_scope()</a></h3>
142
143
144
145
146 <pre>sel_scope() = scope | all | global | local</pre>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
147
148
149
4ffd1fa added surrender/2
Ulf Wiger authored
150 <h3 class="typedecl"><a name="type-sel_type">sel_type()</a></h3>
151
152
153
154
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
155 <pre>sel_type() = <a href="#type-type">type()</a> | names | props | counters | aggr_counters</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
156
157
158
159 <h3 class="typedecl"><a name="type-type">type()</a></h3>
160
161
162
163
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
164 <pre>type() = n | p | c | a</pre>
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
165
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
166
167 n = name; p = property; c = counter;
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
168 a = aggregate_counter
169
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
170
171 <h3 class="typedecl"><a name="type-unique_id">unique_id()</a></h3>
172
173
174
175
176 <pre>unique_id() = {n | a, <a href="#type-scope">scope()</a>, any()}</pre>
177
178
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
179 <h2><a name="index">Function Index</a></h2>
180
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
181
182
2842009 gproc_dist now resynchs when nodes added
Ulf Wiger authored
183 <table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#add_global_aggr_counter-1">add_global_aggr_counter/1</a></td><td>Registers a global (unique) aggregated counter.</td></tr><tr><td valign="top"><a href="#add_global_counter-2">add_global_counter/2</a></td><td>Registers a global (non-unique) counter.</td></tr><tr><td valign="top"><a href="#add_global_name-1">add_global_name/1</a></td><td>Registers a global (unique) name.</td></tr><tr><td valign="top"><a href="#add_global_property-2">add_global_property/2</a></td><td>Registers a global (non-unique) property.</td></tr><tr><td valign="top"><a href="#add_local_aggr_counter-1">add_local_aggr_counter/1</a></td><td>Registers a local (unique) aggregated counter.</td></tr><tr><td valign="top"><a href="#add_local_counter-2">add_local_counter/2</a></td><td>Registers a local (non-unique) counter.</td></tr><tr><td valign="top"><a href="#add_local_name-1">add_local_name/1</a></td><td>Registers a local (unique) name.</td></tr><tr><td valign="top"><a href="#add_local_property-2">add_local_property/2</a></td><td>Registers a local (non-unique) property.</td></tr><tr><td valign="top"><a href="#audit_process-1">audit_process/1</a></td><td></td></tr><tr><td valign="top"><a href="#await-1">await/1</a></td><td>Equivalent to <a href="#await-2"><tt>await(Key, infinity)</tt></a>.</td></tr><tr><td valign="top"><a href="#await-2">await/2</a></td><td>Wait for a local name to be registered.</td></tr><tr><td valign="top"><a href="#cancel_wait-2">cancel_wait/2</a></td><td></td></tr><tr><td valign="top"><a href="#default-1">default/1</a></td><td></td></tr><tr><td valign="top"><a href="#first-1">first/1</a></td><td>Behaves as ets:first(Tab) for a given type of registration object.</td></tr><tr><td valign="top"><a href="#get_env-3">get_env/3</a></td><td>Equivalent to <a href="#get_env-4"><tt>get_env(Scope, App, Key, [app_env])</tt></a>.</td></tr><tr><td valign="top"><a href="#get_env-4">get_env/4</a></td><td>Read an environment value, potentially cached as a <code>gproc_env</code> property.</td></tr><tr><td valign="top"><a href="#get_set_env-3">get_set_env/3</a></td><td>Equivalent to <a href="#get_set_env-4"><tt>get_set_env(Scope, App, Key, [app_env])</tt></a>.</td></tr><tr><td valign="top"><a href="#get_set_env-4">get_set_env/4</a></td><td>Fetch and cache an environment value, if not already cached.</td></tr><tr><td valign="top"><a href="#get_value-1">get_value/1</a></td><td>Read the value stored with a key registered to the current process.</td></tr><tr><td valign="top"><a href="#give_away-2">give_away/2</a></td><td>Atomically transfers the key <code>From</code> to the process identified by <code>To</code>.</td></tr><tr><td valign="top"><a href="#info-1">info/1</a></td><td>Similar to <code>process_info(Pid)</code> but with additional gproc info.</td></tr><tr><td valign="top"><a href="#info-2">info/2</a></td><td>Similar to process_info(Pid, Item), but with additional gproc info.</td></tr><tr><td valign="top"><a href="#last-1">last/1</a></td><td>Behaves as ets:last(Tab) for a given type of registration object.</td></tr><tr><td valign="top"><a href="#lookup_global_aggr_counter-1">lookup_global_aggr_counter/1</a></td><td>Lookup a global (unique) aggregated counter and returns its value.</td></tr><tr><td valign="top"><a href="#lookup_global_counters-1">lookup_global_counters/1</a></td><td>Look up all global (non-unique) instances of a given Counter.</td></tr><tr><td valign="top"><a href="#lookup_global_name-1">lookup_global_name/1</a></td><td>Lookup a global unique name.</td></tr><tr><td valign="top"><a href="#lookup_global_properties-1">lookup_global_properties/1</a></td><td>Look up all global (non-unique) instances of a given Property.</td></tr><tr><td valign="top"><a href="#lookup_local_aggr_counter-1">lookup_local_aggr_counter/1</a></td><td>Lookup a local (unique) aggregated counter and returns its value.</td></tr><tr><td valign="top"><a href="#lookup_local_counters-1">lookup_local_counters/1</a></td><td>Look up all local (non-unique) instances of a given Counter.</td></tr><tr><td valign="top"><a href="#lookup_local_name-1">lookup_local_name/1</a></td><td>Lookup a local unique name.</td></tr><tr><td valign="top"><a href="#lookup_local_properties-1">lookup_local_properties/1</a></td><td>Look up all local (non-unique) instances of a given Property.</td></tr><tr><td valign="top"><a href="#lookup_pid-1">lookup_pid/1</a></td><td>Lookup the Pid stored with a key.</td></tr><tr><td valign="top"><a href="#lookup_pids-1">lookup_pids/1</a></td><td>Returns a list of pids with the published key Key.</td></tr><tr><td valign="top"><a href="#lookup_value-1">lookup_value/1</a></td><td>Lookup the value stored with a key.</td></tr><tr><td valign="top"><a href="#lookup_values-1">lookup_values/1</a></td><td>Retrieve the <code>{Pid,Value}</code> pairs corresponding to Key.</td></tr><tr><td valign="top"><a href="#mreg-3">mreg/3</a></td><td>Register multiple {Key,Value} pairs of a given type and scope.</td></tr><tr><td valign="top"><a href="#munreg-3">munreg/3</a></td><td>Unregister multiple Key items of a given type and scope.</td></tr><tr><td valign="top"><a href="#nb_wait-1">nb_wait/1</a></td><td>Wait for a local name to be registered.</td></tr><tr><td valign="top"><a href="#next-2">next/2</a></td><td>Behaves as ets:next(Tab,Key) for a given type of registration object.</td></tr><tr><td valign="top"><a href="#prev-2">prev/2</a></td><td>Behaves as ets:prev(Tab,Key) for a given type of registration object.</td></tr><tr><td valign="top"><a href="#reg-1">reg/1</a></td><td>Equivalent to <a href="#reg-2"><tt>reg(Key, default(Key))</tt></a>.</td></tr><tr><td valign="top"><a href="#reg-2">reg/2</a></td><td>Register a name or property for the current process.</td></tr><tr><td valign="top"><a href="#select-1">select/1</a></td><td>Equivalent to <a href="#select-2"><tt>select(all, Pat)</tt></a>.</td></tr><tr><td valign="top"><a href="#select-2">select/2</a></td><td>Perform a select operation on the process registry.</td></tr><tr><td valign="top"><a href="#select-3">select/3</a></td><td>Like <a href="#select-2"><code>select/2</code></a> but returns Limit objects at a time.</td></tr><tr><td valign="top"><a href="#select_count-1">select_count/1</a></td><td>Equivalent to <a href="#select_count-2"><tt>select_count(all, Pat)</tt></a>.</td></tr><tr><td valign="top"><a href="#select_count-2">select_count/2</a></td><td>Perform a select_count operation on the process registry.</td></tr><tr><td valign="top"><a href="#send-2">send/2</a></td><td>Sends a message to the process, or processes, corresponding to Key.</td></tr><tr><td valign="top"><a href="#set_env-5">set_env/5</a></td><td>Updates the cached value as well as underlying environment.</td></tr><tr><td valign="top"><a href="#set_value-2">set_value/2</a></td><td>Sets the value of the registeration entry given by Key.</td></tr><tr><td valign="top"><a href="#start_link-0">start_link/0</a></td><td>Starts the gproc server.</td></tr><tr><td valign="top"><a href="#table-1">table/1</a></td><td>Equivalent to <a href="#table-2"><tt>table(Context, [])</tt></a>.</td></tr><tr><td valign="top"><a href="#table-2">table/2</a></td><td>QLC table generator for the gproc registry.</td></tr><tr><td valign="top"><a href="#unreg-1">unreg/1</a></td><td>Unregister a name or property.</td></tr><tr><td valign="top"><a href="#unregister_name-1">unregister_name/1</a></td><td>Equivalent to <tt>unreg / 1</tt>.</td></tr><tr><td valign="top"><a href="#update_counter-2">update_counter/2</a></td><td>Updates the counter registered as Key for the current process.</td></tr><tr><td valign="top"><a href="#where-1">where/1</a></td><td>Returns the pid registered as Key.</td></tr><tr><td valign="top"><a href="#whereis_name-1">whereis_name/1</a></td><td>Equivalent to <tt>where / 1</tt>.</td></tr></table>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
184
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
185
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
186
187
4ffd1fa added surrender/2
Ulf Wiger authored
188 <h2><a name="functions">Function Details</a></h2>
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
189
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
190
191 <a name="add_global_aggr_counter-1"></a>
192
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
193 <h3>add_global_aggr_counter/1</h3>
194
195
196
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
197
198
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
199 `add_global_aggr_counter(Name) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
200
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
201
202
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
203 Equivalent to [`reg({a, g, Name})`](#reg-1).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
204
4ffd1fa added surrender/2
Ulf Wiger authored
205 Registers a global (unique) aggregated counter.<a name="add_global_counter-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
206
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
207 <h3>add_global_counter/2</h3>
208
209
210
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
211
212
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
213 `add_global_counter(Name, Initial) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
214
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
215
216
4ffd1fa added surrender/2
Ulf Wiger authored
217 Registers a global (non-unique) counter. @equiv reg({c,g,Name},Value)<a name="add_global_name-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
218
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
219 <h3>add_global_name/1</h3>
220
221
222
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
223
224
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
225 `add_global_name(Name) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
226
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
227
228
4ffd1fa added surrender/2
Ulf Wiger authored
229 Registers a global (unique) name. @equiv reg({n,g,Name})<a name="add_global_property-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
230
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
231 <h3>add_global_property/2</h3>
232
233
234
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
235
236
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
237 `add_global_property(Name, Value) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
238
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
239
240
4ffd1fa added surrender/2
Ulf Wiger authored
241 Registers a global (non-unique) property. @equiv reg({p,g,Name},Value)<a name="add_local_aggr_counter-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
242
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
243 <h3>add_local_aggr_counter/1</h3>
244
245
246
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
247
248
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
249 `add_local_aggr_counter(Name) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
250
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
251
252
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
253 Equivalent to [`reg({a, l, Name})`](#reg-1).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
254
4ffd1fa added surrender/2
Ulf Wiger authored
255 Registers a local (unique) aggregated counter.<a name="add_local_counter-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
256
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
257 <h3>add_local_counter/2</h3>
258
259
260
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
261
262
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
263 `add_local_counter(Name, Initial) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
264
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
265
266
4ffd1fa added surrender/2
Ulf Wiger authored
267 Registers a local (non-unique) counter. @equiv reg({c,l,Name},Value)<a name="add_local_name-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
268
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
269 <h3>add_local_name/1</h3>
270
271
272
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
273
274
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
275 `add_local_name(Name) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
276
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
277
278
4ffd1fa added surrender/2
Ulf Wiger authored
279 Registers a local (unique) name. @equiv reg({n,l,Name})<a name="add_local_property-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
280
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
281 <h3>add_local_property/2</h3>
282
283
284
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
285
286
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
287 `add_local_property(Name, Value) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
288
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
289
290
4ffd1fa added surrender/2
Ulf Wiger authored
291 Registers a local (non-unique) property. @equiv reg({p,l,Name},Value)<a name="audit_process-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
292
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
293 <h3>audit_process/1</h3>
294
295
296
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
297
298
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
299 <pre>audit_process(Pid::pid()) -> ok</pre>
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
300 <br></br>
301
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
302
303 <a name="await-1"></a>
304
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
305 <h3>await/1</h3>
306
307
308
309
310
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
311 <pre>await(Key::<a href="#type-key">key()</a>) -> {pid(), Value}</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
312 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
313
314
315
316
4ffd1fa added surrender/2
Ulf Wiger authored
317 Equivalent to [`await(Key, infinity)`](#await-2).<a name="await-2"></a>
318
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
319 <h3>await/2</h3>
320
321
322
323
324
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
325 <pre>await(Key::<a href="#type-key">key()</a>, Timeout) -> {pid(), Value}</pre>
326 <ul class="definitions"><li><pre>Timeout = integer() | infinity</pre></li></ul>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
327
328
329
330 Wait for a local name to be registered.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
331 The function raises an exception if the timeout expires. Timeout must be
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
332 either an interger > 0 or 'infinity'.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
333 A small optimization: we first perform a lookup, to see if the name
334 is already registered. This way, the cost of the operation will be
335 roughly the same as of where/1 in the case where the name is already
4ffd1fa added surrender/2
Ulf Wiger authored
336 registered (the difference: await/2 also returns the value).<a name="cancel_wait-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
337
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
338 <h3>cancel_wait/2</h3>
339
340
341
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
342
343
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
344 `cancel_wait(Key, Ref) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
345
346 <a name="default-1"></a>
347
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
348 <h3>default/1</h3>
349
350
351
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
352
353
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
354 `default(X1) -> any()`
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
355
356 <a name="first-1"></a>
357
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
358 <h3>first/1</h3>
359
360
361
362
363
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
364 <pre>first(Context::<a href="#type-context">context()</a>) -> <a href="#type-key">key()</a> | '$end_of_table'</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
365 <br></br>
366
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
367
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
368
369
370
371
372 Behaves as ets:first(Tab) for a given type of registration object.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
373
374 See [`http://www.erlang.org/doc/man/ets.html#first-1`](http://www.erlang.org/doc/man/ets.html#first-1).
c306076 First implementation of environment variable handling.
Ulf Wiger authored
375 The registry behaves as an ordered_set table.<a name="get_env-3"></a>
376
377 <h3>get_env/3</h3>
378
379
380
381
382
383 <pre>get_env(Scope::<a href="#type-scope">scope()</a>, App::atom(), Key::atom()) -> term()</pre>
384 <br></br>
385
386
387
388
389 Equivalent to [`get_env(Scope, App, Key, [app_env])`](#get_env-4).<a name="get_env-4"></a>
390
391 <h3>get_env/4</h3>
392
393
394
395
396
397 <pre>get_env(Scope::<a href="#type-scope">scope()</a>, App::atom(), Key::atom(), Strategy) -> term()</pre>
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
398 <ul class="definitions"><li><pre>Strategy = [Alternative]</pre></li><li><pre>Alternative = app_env | os_env | inherit | {inherit, pid()} | {inherit, <a href="#type-unique_id">unique_id()</a>} | init_arg | {mnesia, ActivityType, Oid, Pos} | {default, term()} | error</pre></li></ul>
c306076 First implementation of environment variable handling.
Ulf Wiger authored
399
400
401
402
403
e46cabf fix lines that were too long
Ulf Wiger authored
404 Read an environment value, potentially cached as a `gproc_env` property.
c306076 First implementation of environment variable handling.
Ulf Wiger authored
405
406
407
408 This function first tries to read the value of a cached property,
409 `{p, Scope, {gproc_env, App, Key}}`. If this fails, it will try the provided
410 alternative strategy. `Strategy` is a list of alternatives, tried in order.
411 Each alternative can be one of:
412
413
414
415 * `app_env` - try `application:get_env(App, Key)`
416 * `os_env` - try `os:getenv(ENV)`, where `ENV` is `Key` converted into an
417 uppercase string
418 * `{os_env, ENV}` - try `os:getenv(ENV)`
e46cabf fix lines that were too long
Ulf Wiger authored
419 * `inherit` - inherit the cached value, if any, held by the parent process.
c306076 First implementation of environment variable handling.
Ulf Wiger authored
420 * `{inherit, Pid}` - inherit the cached value, if any, held by `Pid`.
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
421 * `{inherit, Id}` - inherit the cached value, if any, held by the process
422 registered in `gproc` as `Id`.
af14ad2 doc additions, inherit by name, init_arg
Ulf Wiger authored
423 * `init_arg` - try `init:get_argument(Key)`; expects a single value, if any.
424 * `{mnesia, ActivityType, Oid, Pos}` - try
e46cabf fix lines that were too long
Ulf Wiger authored
425 `mnesia:activity(ActivityType, fun() -> mnesia:read(Oid) end)`; retrieve
426 the value in position `Pos` if object found.
427 * `{default, Value}` - set a default value to return once alternatives have
428 been exhausted; if not set, `undefined` will be returned.
c306076 First implementation of environment variable handling.
Ulf Wiger authored
429 * `error` - raise an exception, `erlang:error(gproc_env, [App, Key, Scope])`.
430
431
432
433 While any alternative can occur more than once, the only one that might make
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
434 sense to use multiple times is `{default, Value}`.
435
436
437
438 The return value will be one of:
439
440
441
e46cabf fix lines that were too long
Ulf Wiger authored
442 * The value of the first matching alternative, or `error` eception,
f096466 doc fixes + revert to shortnames in dist_tests
Ulf Wiger authored
443 whichever comes first
444 * The last instance of `{default, Value}`, or `undefined`, if there is no
445 matching alternative, default or `error` entry in the list.
c306076 First implementation of environment variable handling.
Ulf Wiger authored
446
447 The `error` option can be used to assert that a value has been previously
448 cached. Alternatively, it can be used to assert that a value is either cached
e46cabf fix lines that were too long
Ulf Wiger authored
449 or at least defined somewhere,
450 e.g. `get_env(l, mnesia, dir, [app_env, error])`.<a name="get_set_env-3"></a>
c306076 First implementation of environment variable handling.
Ulf Wiger authored
451
452 <h3>get_set_env/3</h3>
453
454
455
456
457
458 <pre>get_set_env(Scope::<a href="#type-scope">scope()</a>, App::atom(), Key::atom()) -> term()</pre>
459 <br></br>
460
461
462
463
464 Equivalent to [`get_set_env(Scope, App, Key, [app_env])`](#get_set_env-4).<a name="get_set_env-4"></a>
465
466 <h3>get_set_env/4</h3>
467
468
469
470
471
472 <pre>get_set_env(Scope::<a href="#type-scope">scope()</a>, App::atom(), Key::atom(), Strategy) -> Value</pre>
473 <br></br>
474
475
476
477
478
479
af14ad2 doc additions, inherit by name, init_arg
Ulf Wiger authored
480 Fetch and cache an environment value, if not already cached.
481
482 This function does the same thing as [`get_env/4`](#get_env-4), but also updates the
c306076 First implementation of environment variable handling.
Ulf Wiger authored
483 cache. Note that the cache will be updated even if the result of the lookup
af14ad2 doc additions, inherit by name, init_arg
Ulf Wiger authored
484 is `undefined`.
485
486
487 __See also:__ [get_env/4](#get_env-4).<a name="get_value-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
488
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
489 <h3>get_value/1</h3>
490
491
492
493
494
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
495 <pre>get_value(Key) -> Value</pre>
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
496 <br></br>
497
498
499
500
501
502
503 Read the value stored with a key registered to the current process.
504
505 If no such key is registered to the current process, this function exits.<a name="give_away-2"></a>
506
507 <h3>give_away/2</h3>
508
509
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
510
4ffd1fa added surrender/2
Ulf Wiger authored
511
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
512
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
513 <pre>give_away(From::<a href="#type-key">key()</a>, To::pid() | <a href="#type-key">key()</a>) -> undefined | pid()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
514 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
515
516
517
518
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
519
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
520
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
521 Atomically transfers the key `From` to the process identified by `To`.
4ffd1fa added surrender/2
Ulf Wiger authored
522
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
523
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
524
e46cabf fix lines that were too long
Ulf Wiger authored
525 This function transfers any gproc key (name, property, counter, aggr counter)
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
526 from one process to another, and returns the pid of the new owner.
527
528
529
530 `To` must be either a pid or a unique name (name or aggregated counter), but
531 does not necessarily have to resolve to an existing process. If there is
532 no process registered with the `To` key, `give_away/2` returns `undefined`,
533 and the `From` key is effectively unregistered.
534
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
535
536
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
537 It is allowed to give away a key to oneself, but of course, this operation
538 will have no effect.
539
540 Fails with `badarg` if the calling process does not have a `From` key
541 registered.<a name="info-1"></a>
542
543 <h3>info/1</h3>
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
544
545
546
547
4ffd1fa added surrender/2
Ulf Wiger authored
548
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
549 <pre>info(Pid::pid()) -> ProcessInfo</pre>
550 <ul class="definitions"><li><pre>ProcessInfo = [{gproc, [{Key, Value}]} | ProcessInfo]</pre></li></ul>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
551
552
553
554
555
556 Similar to `process_info(Pid)` but with additional gproc info.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
557
558 Returns the same information as process_info(Pid), but with the
559 addition of a `gproc` information item, containing the `{Key,Value}`
4ffd1fa added surrender/2
Ulf Wiger authored
560 pairs registered to the process.<a name="info-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
561
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
562 <h3>info/2</h3>
563
564
565
566
567
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
568 <pre>info(Pid::pid(), Item::atom()) -> {Item, Info}</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
569 <br></br>
570
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
571
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
572
573
574
575
576 Similar to process_info(Pid, Item), but with additional gproc info.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
577
578 For `Item = gproc`, this function returns a list of `{Key, Value}` pairs
579 registered to the process Pid. For other values of Item, it returns the
4ffd1fa added surrender/2
Ulf Wiger authored
580 same as [`http://www.erlang.org/doc/man/erlang.html#process_info-2`](http://www.erlang.org/doc/man/erlang.html#process_info-2).<a name="last-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
581
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
582 <h3>last/1</h3>
583
584
585
586
587
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
588 <pre>last(Context::<a href="#type-context">context()</a>) -> <a href="#type-key">key()</a> | '$end_of_table'</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
589 <br></br>
590
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
591
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
592
593
594
595
596 Behaves as ets:last(Tab) for a given type of registration object.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
597
598 See [`http://www.erlang.org/doc/man/ets.html#last-1`](http://www.erlang.org/doc/man/ets.html#last-1).
4ffd1fa added surrender/2
Ulf Wiger authored
599 The registry behaves as an ordered_set table.<a name="lookup_global_aggr_counter-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
600
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
601 <h3>lookup_global_aggr_counter/1</h3>
602
603
604
605
606
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
607 <pre>lookup_global_aggr_counter(Name::any()) -> integer()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
608 <br></br>
609
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
610
611
612
613 Equivalent to [`where({a, g, Name})`](#where-1).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
614
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
615 Lookup a global (unique) aggregated counter and returns its value.
4ffd1fa added surrender/2
Ulf Wiger authored
616 Fails if there is no such object.<a name="lookup_global_counters-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
617
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
618 <h3>lookup_global_counters/1</h3>
619
620
621
622
623
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
624 <pre>lookup_global_counters(Counter::any()) -> [{pid(), Value::integer()}]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
625 <br></br>
626
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
627
628
629
630 Equivalent to [`lookup_values({c, g, Counter})`](#lookup_values-1).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
631
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
632 Look up all global (non-unique) instances of a given Counter.
4ffd1fa added surrender/2
Ulf Wiger authored
633 Returns a list of {Pid, Value} tuples for all matching objects.<a name="lookup_global_name-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
634
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
635 <h3>lookup_global_name/1</h3>
636
637
638
639
640
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
641 <pre>lookup_global_name(Name::any()) -> pid()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
642 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
643
644
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
645
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
646
4ffd1fa added surrender/2
Ulf Wiger authored
647 Equivalent to [`where({n, g, Name})`](#where-1).
648
649 Lookup a global unique name. Fails if there is no such name.<a name="lookup_global_properties-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
650
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
651 <h3>lookup_global_properties/1</h3>
652
653
654
655
656
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
657 <pre>lookup_global_properties(Property::any()) -> [{pid(), Value}]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
658 <br></br>
659
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
660
661
662
663 Equivalent to [`lookup_values({p, g, Property})`](#lookup_values-1).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
664
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
665 Look up all global (non-unique) instances of a given Property.
4ffd1fa added surrender/2
Ulf Wiger authored
666 Returns a list of {Pid, Value} tuples for all matching objects.<a name="lookup_local_aggr_counter-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
667
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
668 <h3>lookup_local_aggr_counter/1</h3>
669
670
671
672
673
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
674 <pre>lookup_local_aggr_counter(Name::any()) -> integer()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
675 <br></br>
676
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
677
678
679
680 Equivalent to [`where({a, l, Name})`](#where-1).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
681
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
682 Lookup a local (unique) aggregated counter and returns its value.
4ffd1fa added surrender/2
Ulf Wiger authored
683 Fails if there is no such object.<a name="lookup_local_counters-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
684
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
685 <h3>lookup_local_counters/1</h3>
686
687
688
689
690
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
691 <pre>lookup_local_counters(Counter::any()) -> [{pid(), Value::integer()}]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
692 <br></br>
693
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
694
695
696
697 Equivalent to [`lookup_values({c, l, Counter})`](#lookup_values-1).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
698
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
699 Look up all local (non-unique) instances of a given Counter.
4ffd1fa added surrender/2
Ulf Wiger authored
700 Returns a list of {Pid, Value} tuples for all matching objects.<a name="lookup_local_name-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
701
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
702 <h3>lookup_local_name/1</h3>
703
704
705
706
707
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
708 <pre>lookup_local_name(Name::any()) -> pid()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
709 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
710
711
712
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
713
4ffd1fa added surrender/2
Ulf Wiger authored
714 Equivalent to [`where({n, l, Name})`](#where-1).
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
715
4ffd1fa added surrender/2
Ulf Wiger authored
716 Lookup a local unique name. Fails if there is no such name.<a name="lookup_local_properties-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
717
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
718 <h3>lookup_local_properties/1</h3>
719
720
721
722
723
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
724 <pre>lookup_local_properties(Property::any()) -> [{pid(), Value}]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
725 <br></br>
726
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
727
728
729
730 Equivalent to [`lookup_values({p, l, Property})`](#lookup_values-1).
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
731
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
732 Look up all local (non-unique) instances of a given Property.
4ffd1fa added surrender/2
Ulf Wiger authored
733 Returns a list of {Pid, Value} tuples for all matching objects.<a name="lookup_pid-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
734
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
735 <h3>lookup_pid/1</h3>
736
737
738
739
740
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
741 <pre>lookup_pid(Key) -> Pid</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
742 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
743
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
744
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
745
746
4ffd1fa added surrender/2
Ulf Wiger authored
747 Lookup the Pid stored with a key.
748 <a name="lookup_pids-1"></a>
749
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
750 <h3>lookup_pids/1</h3>
751
752
753
754
755
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
756 <pre>lookup_pids(Key::<a href="#type-key">key()</a>) -> [pid()]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
757 <br></br>
758
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
759
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
760
761
762
763
764 Returns a list of pids with the published key Key
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
765
766 If the type of registration entry is either name or aggregated counter,
767 this function will return either an empty list, or a list of one pid.
4ffd1fa added surrender/2
Ulf Wiger authored
768 For non-unique types, the return value can be a list of any length.<a name="lookup_value-1"></a>
817e578 re-exported lookup_value/1
Ulf Wiger authored
769
770 <h3>lookup_value/1</h3>
771
772
773
774
775
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
776 <pre>lookup_value(Key) -> Value</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
777 <br></br>
817e578 re-exported lookup_value/1
Ulf Wiger authored
778
779
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
780
781
4ffd1fa added surrender/2
Ulf Wiger authored
782 Lookup the value stored with a key.
783 <a name="lookup_values-1"></a>
784
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
785 <h3>lookup_values/1</h3>
786
787
788
789
790
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
791 <pre>lookup_values(Key::<a href="#type-key">key()</a>) -> [{pid(), Value}]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
792 <br></br>
793
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
794
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
795
796
797
798
799 Retrieve the `{Pid,Value}` pairs corresponding to Key.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
800
801 Key refer to any type of registry object. If it refers to a unique
802 object, the list will be of length 0 or 1. If it refers to a non-unique
4ffd1fa added surrender/2
Ulf Wiger authored
803 object, the return value can be a list of any length.<a name="mreg-3"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
804
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
805 <h3>mreg/3</h3>
806
807
808
809
810
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
811 <pre>mreg(T::<a href="#type-type">type()</a>, X2::<a href="#type-scope">scope()</a>, KVL::[{Key::any(), Value::any()}]) -> true</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
812 <br></br>
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
813
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
814
815
816
817
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
818
4ffd1fa added surrender/2
Ulf Wiger authored
819 Register multiple {Key,Value} pairs of a given type and scope.
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
820
75f0298 Added gproc:munreg/3
Ulf Wiger authored
821 This function is more efficient than calling [`reg/2`](#reg-2) repeatedly.
822 It is also atomic in regard to unique names; either all names are registered
823 or none are.<a name="munreg-3"></a>
824
825 <h3>munreg/3</h3>
826
827
828
829
830
831 <pre>munreg(T::<a href="#type-type">type()</a>, X2::<a href="#type-scope">scope()</a>, L::[Key::any()]) -> true</pre>
832 <br></br>
833
834
835
836
837
838
839 Unregister multiple Key items of a given type and scope.
840
841 This function is usually more efficient than calling [`unreg/1`](#unreg-1)
842 repeatedly.<a name="nb_wait-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
843
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
844 <h3>nb_wait/1</h3>
845
846
847
848
849
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
850 <pre>nb_wait(Key::<a href="#type-key">key()</a>) -> Ref</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
851 <br></br>
852
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
853
854
855
856 Wait for a local name to be registered.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
857 The caller can expect to receive a message,
4ffd1fa added surrender/2
Ulf Wiger authored
858 {gproc, Ref, registered, {Key, Pid, Value}}, once the name is registered.<a name="next-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
859
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
860 <h3>next/2</h3>
861
862
863
864
865
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
866 <pre>next(Context::<a href="#type-context">context()</a>, Key::<a href="#type-key">key()</a>) -> <a href="#type-key">key()</a> | '$end_of_table'</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
867 <br></br>
868
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
869
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
870
871
872
873
874 Behaves as ets:next(Tab,Key) for a given type of registration object.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
875
876 See [`http://www.erlang.org/doc/man/ets.html#next-2`](http://www.erlang.org/doc/man/ets.html#next-2).
4ffd1fa added surrender/2
Ulf Wiger authored
877 The registry behaves as an ordered_set table.<a name="prev-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
878
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
879 <h3>prev/2</h3>
880
881
882
883
884
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
885 <pre>prev(Context::<a href="#type-context">context()</a>, Key::<a href="#type-key">key()</a>) -> <a href="#type-key">key()</a> | '$end_of_table'</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
886 <br></br>
887
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
888
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
889
890
891
892
893 Behaves as ets:prev(Tab,Key) for a given type of registration object.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
894
895 See [`http://www.erlang.org/doc/man/ets.html#prev-2`](http://www.erlang.org/doc/man/ets.html#prev-2).
4ffd1fa added surrender/2
Ulf Wiger authored
896 The registry behaves as an ordered_set table.<a name="reg-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
897
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
898 <h3>reg/1</h3>
899
900
901
902
903
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
904 <pre>reg(Key::<a href="#type-key">key()</a>) -> true</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
905 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
906
907
908
4ffd1fa added surrender/2
Ulf Wiger authored
909
910 Equivalent to [`reg(Key, default(Key))`](#reg-2).<a name="reg-2"></a>
911
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
912 <h3>reg/2</h3>
913
914
915
916
917
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
918 <pre>reg(Key::<a href="#type-key">key()</a>, Value) -> true</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
919 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
920
921
922
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
923
924
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
925
4ffd1fa added surrender/2
Ulf Wiger authored
926 Register a name or property for the current process
927
928 <a name="select-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
929
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
930 <h3>select/1</h3>
931
932
933
934
935
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
936 <pre>select(Pat::<a href="#type-select_pattern">select_pattern()</a>) -> [<a href="#type-sel_object">sel_object()</a>]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
937 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
938
939
940
4ffd1fa added surrender/2
Ulf Wiger authored
941
942 Equivalent to [`select(all, Pat)`](#select-2).<a name="select-2"></a>
943
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
944 <h3>select/2</h3>
945
946
947
948
949
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
950 <pre>select(Context::<a href="#type-context">context()</a>, Pat::<a href="#type-sel_pattern">sel_pattern()</a>) -> [{Key, Pid, Value}]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
951 <br></br>
952
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
953
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
954
955
956
957
958 Perform a select operation on the process registry.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
959
960 The physical representation in the registry may differ from the above,
4ffd1fa added surrender/2
Ulf Wiger authored
961 but the select patterns are transformed appropriately.<a name="select-3"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
962
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
963 <h3>select/3</h3>
964
965
966
967
968
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
969 <pre>select(Context::<a href="#type-context">context()</a>, Pat::<a href="#type-sel_patten">sel_patten()</a>, Limit::integer()) -> [{Key, Pid, Value}]</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
970 <br></br>
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
971
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
972
973
974
975
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
976
4ffd1fa added surrender/2
Ulf Wiger authored
977 Like [`select/2`](#select-2) but returns Limit objects at a time.
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
978
2842009 gproc_dist now resynchs when nodes added
Ulf Wiger authored
979 See [`http://www.erlang.org/doc/man/ets.html#select-3`](http://www.erlang.org/doc/man/ets.html#select-3).<a name="select_count-1"></a>
980
981 <h3>select_count/1</h3>
982
983
984
985
986
987 <pre>select_count(Pat::<a href="#type-select_pattern">select_pattern()</a>) -> [<a href="#type-sel_object">sel_object()</a>]</pre>
988 <br></br>
989
990
991
992
993 Equivalent to [`select_count(all, Pat)`](#select_count-2).<a name="select_count-2"></a>
994
995 <h3>select_count/2</h3>
996
997
998
999
1000
1001 <pre>select_count(Context::<a href="#type-context">context()</a>, Pat::<a href="#type-sel_pattern">sel_pattern()</a>) -> [{Key, Pid, Value}]</pre>
1002 <br></br>
1003
1004
1005
1006
1007
1008
1009 Perform a select_count operation on the process registry.
1010
1011 The physical representation in the registry may differ from the above,
1012 but the select patterns are transformed appropriately.<a name="send-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1013
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1014 <h3>send/2</h3>
1015
1016
1017
1018
1019
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1020 <pre>send(Key::<a href="#type-key">key()</a>, Msg::any()) -> Msg</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
1021 <br></br>
1022
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1023
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1024
1025
1026
1027
1028 Sends a message to the process, or processes, corresponding to Key.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1029
1030 If Key belongs to a unique object (name or aggregated counter), this
1031 function will send a message to the corresponding process, or fail if there
1032 is no such process. If Key is for a non-unique object type (counter or
c306076 First implementation of environment variable handling.
Ulf Wiger authored
1033 property), Msg will be send to all processes that have such an object.<a name="set_env-5"></a>
1034
1035 <h3>set_env/5</h3>
1036
1037
1038
1039
1040
1041 <pre>set_env(Scope::<a href="#type-scope">scope()</a>, App::atom(), Key::atom(), Value::term(), Strategy) -> Value</pre>
2dc8391 documented the mnesia option for set_env
Ulf Wiger authored
1042 <ul class="definitions"><li><pre>Strategy = [Alternative]</pre></li><li><pre>Alternative = app_env | os_env | {os_env, VAR} | {mnesia, ActivityType, Oid, Pos}</pre></li></ul>
c306076 First implementation of environment variable handling.
Ulf Wiger authored
1043
1044
1045
1046
1047
1048 Updates the cached value as well as underlying environment.
1049
2dc8391 documented the mnesia option for set_env
Ulf Wiger authored
1050
1051
1052 This function should be exercised with caution, as it affects the larger
1053 environment outside gproc. This function modifies the cached value, and then
1054 proceeds to update the underlying environment (OS environment variable or
1055 application environment variable).
1056
1057 When the `mnesia` alternative is used, gproc will try to update any existing
1058 object, changing only the `Pos` position. If no such object exists, it will
1059 create a new object, setting any other attributes (except `Pos` and the key)
1060 to `undefined`.<a name="set_value-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1061
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1062 <h3>set_value/2</h3>
1063
1064
1065
1066
1067
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1068 <pre>set_value(Key::<a href="#type-key">key()</a>, Value) -> true</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
1069 <br></br>
1070
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1071
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1072
1073
1074
1075
1076 Sets the value of the registeration entry given by Key
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1077
1078
1079
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1080 Key is assumed to exist and belong to the calling process.
1081 If it doesn't, this function will exit.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1082
1083 Value can be any term, unless the object is a counter, in which case
4ffd1fa added surrender/2
Ulf Wiger authored
1084 it must be an integer.<a name="start_link-0"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1085
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1086 <h3>start_link/0</h3>
1087
1088
1089
1090
1091
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1092 <pre>start_link() -> {ok, pid()}</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
1093 <br></br>
1094
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1095
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1096
1097
1098
1099
1100 Starts the gproc server.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1101
1102 This function is intended to be called from gproc_sup, as part of
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
1103 starting the gproc application.<a name="table-1"></a>
4ffd1fa added surrender/2
Ulf Wiger authored
1104
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1105 <h3>table/1</h3>
1106
1107
1108
1109
1110
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1111 <pre>table(Context::<a href="#type-context">context()</a>) -> any()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
1112 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1113
1114
1115
1116
4ffd1fa added surrender/2
Ulf Wiger authored
1117 Equivalent to [`table(Context, [])`](#table-2).<a name="table-2"></a>
1118
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1119 <h3>table/2</h3>
1120
1121
1122
1123
1124
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1125 <pre>table(Context::<a href="#type-context">context()</a>, Opts) -> any()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
1126 <br></br>
1127
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1128
1129
1130
1131 QLC table generator for the gproc registry.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1132 Context specifies which subset of the registry should be queried.
4ffd1fa added surrender/2
Ulf Wiger authored
1133 See [`http://www.erlang.org/doc/man/qlc.html`](http://www.erlang.org/doc/man/qlc.html).<a name="unreg-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1134
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1135 <h3>unreg/1</h3>
1136
1137
1138
1139
1140
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1141 <pre>unreg(Key::<a href="#type-key">key()</a>) -> true</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
1142 <br></br>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1143
1144
1145
cad63c7 case_clause in process_is_down()
Ulf Wiger authored
1146
4ffd1fa added surrender/2
Ulf Wiger authored
1147 Unregister a name or property.<a name="unregister_name-1"></a>
cad63c7 case_clause in process_is_down()
Ulf Wiger authored
1148
1149 <h3>unregister_name/1</h3>
1150
1151
1152
1153
1154
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1155 `unregister_name(Key) -> any()`
cad63c7 case_clause in process_is_down()
Ulf Wiger authored
1156
1157
1158
4ffd1fa added surrender/2
Ulf Wiger authored
1159 Equivalent to `unreg / 1`.<a name="update_counter-2"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1160
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1161 <h3>update_counter/2</h3>
1162
1163
1164
1165
1166
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1167 <pre>update_counter(Key::<a href="#type-key">key()</a>, Incr::integer()) -> integer()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
1168 <br></br>
1169
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1170
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1171
1172
1173
1174
1175 Updates the counter registered as Key for the current process.
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1176
1177 This function works like ets:update_counter/3
1178 (see [`http://www.erlang.org/doc/man/ets.html#update_counter-3`](http://www.erlang.org/doc/man/ets.html#update_counter-3)), but
4ffd1fa added surrender/2
Ulf Wiger authored
1179 will fail if the type of object referred to by Key is not a counter.<a name="where-1"></a>
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1180
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1181 <h3>where/1</h3>
1182
1183
1184
1185
1186
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1187 <pre>where(Key::<a href="#type-key">key()</a>) -> pid()</pre>
4ffd1fa added surrender/2
Ulf Wiger authored
1188 <br></br>
1189
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1190
fcdd5ac rebuilt edoc info using edown
Ulf Wiger authored
1191
1192
1193
1194
1195 Returns the pid registered as Key
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1196
1197 The type of registration entry must be either name or aggregated counter.
1198 Otherwise this function will exit. Use [`lookup_pids/1`](#lookup_pids-1) in these
4ffd1fa added surrender/2
Ulf Wiger authored
1199 cases.<a name="whereis_name-1"></a>
cad63c7 case_clause in process_is_down()
Ulf Wiger authored
1200
1201 <h3>whereis_name/1</h3>
1202
1203
1204
1205
1206
59365c4 Fixed select/qlc scope (default: all); fixed dist eunit test; new rebar
Ulf Wiger authored
1207 `whereis_name(Key) -> any()`
cad63c7 case_clause in process_is_down()
Ulf Wiger authored
1208
1209
68e0d19 re-generated docs with updated edown
Ulf Wiger authored
1210
2393bf4 Added gproc:give_away/2 and introduced eunit tests for gproc_dist
Ulf Wiger authored
1211 Equivalent to `where / 1`.
Something went wrong with that request. Please try again.