aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/global_objects/atomics/wait/index.html
blob: 6af6022fc4b202764f1503a45d1e012a10ad2d78 (plain)
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
---
title: Atomics.wait()
slug: Web/JavaScript/Reference/Global_Objects/Atomics/wait
tags:
  - Atomics
  - JavaScript
  - Method
  - Shared Memory
translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/wait
---
<div>{{JSRef}}</div>

<p>Die statische <code><strong>Atomics</strong></code><strong><code>.wait()</code></strong> Methode verifiziert, dass eine gegebene Position in einem {{jsxref("Int32Array")}} ein gegebene Wert ist und dann schläft und entweder aufgeweckt wird oder ein Timeout bekommt. Die Strings <code>"ok"</code>, <code>"not-equal"</code>, und <code>"timed-out"</code> sind alle möglichen Rückgabewerte</p>

<div class="note">
<p><strong>Hinweis:</strong> Diese Operation funktioniert nur mit einem geteilten<strong> </strong>{{jsxref("Int32Array")}} und ist nicht im Main-Thread erlaubt.</p>
</div>

<h2 id="Syntax">Syntax</h2>

<pre class="syntaxbox">Atomics.wait(typedArray, index, value[, timeout])
</pre>

<h3 id="Parameter">Parameter</h3>

<dl>
 <dt><code>typedArray</code></dt>
 <dd>Ein geteiltes {{jsxref("Int32Array")}}.</dd>
 <dt><code>index</code></dt>
 <dd>Die Position im <code>typedArray</code>, an der gewartet wird.</dd>
 <dt><code>value</code></dt>
 <dd>Der wert, mit dem getestet wird.</dd>
 <dt><code>timeout</code> {{optional_inline}}</dt>
 <dd>Wartezeit in Millisekunden. {{jsxref("Infinity")}}, wenn keine Zeit angegeben wird.</dd>
</dl>

<h3 id="Rückgabewert">Rückgabewert</h3>

<p>Ein {{jsxref("String")}} welcher <code>"ok"</code>, <code>"not-equal"</code> oder <code>"timed-out"</code> ist.</p>

<h3 id="Exceptions">Exceptions</h3>

<ul>
 <li>Erzeugt einen {{jsxref("TypeError")}}, wenn <code>typedArray</code> kein  {{jsxref("Int32Array")}} ist.</li>
 <li>Erzeugt ein {{jsxref("RangeError")}}, wenn der <code>index</code> nicht in den Grenzen von <code>typedArray</code> ist.</li>
</ul>

<h2 id="Beipsiele">Beipsiele</h2>

<p>Gegeben ist ein <code>Int32Array</code>:</p>

<pre class="brush: js">var sab = new SharedArrayBuffer(1024);
var int32 = new Int32Array(sab);
</pre>

<p>Ein lesender Thread schläft und wartet auf Position 0, ander der Wert 0 erwartet wird. Solange diese gegeben ist, geht es nicht weiter. Immer wenn ein neuer schreibender Thread einen neuen Wert speichert, wacht der Thread. Im Anschluss ist der neue Wert an der Position 0 (123).</p>

<pre class="brush: js">Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123</pre>

<p>Ein schreibender Thread speichert einen neuen Wert und wacht den wartenden Thread nach dem Schreiben auf.</p>

<pre class="brush: js">console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.wake(int32, 0, 1);</pre>

<h2 id="Spezifikationen">Spezifikationen</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Spezifikation</th>
   <th scope="col">Status</th>
   <th scope="col">Kommentar</th>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-atomics.wait', 'Atomics.wait')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td>Initiale Definition in ES2017.</td>
  </tr>
 </tbody>
</table>

<h2 id="Browserkompatibilität">Browserkompatibilität</h2>



<p>{{Compat("javascript.builtins.Atomics.wait")}}</p>

<h2 id="Siehe_auch">Siehe auch</h2>

<ul>
 <li>{{jsxref("Atomics")}}</li>
 <li>{{jsxref("Atomics.wake()")}}</li>
</ul>