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
|
---
title: Atomics.notify()
slug: Web/JavaScript/Reference/Global_Objects/Atomics/wake
tags:
- Atomics
- JavaScript
- Method
- Shared Memory
translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/notify
---
<div>{{JSRef}}</div>
<p>Die statische <code><strong>Atomics</strong></code><strong><code>.notify()</code></strong> Methode benachrichtigt Threads, die in einer Warteschlange schlafen.</p>
<div class="note">
<p><strong>Hinweis:</strong> Diese Operation funktioniert nur mit einem {{jsxref("Int32Array")}}.</p>
</div>
<h2 id="Syntax">Syntax</h2>
<pre class="syntaxbox">Atomics.notify(typedArray, index, count)
</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 aufgewacht wird.</dd>
<dt><code>count</code></dt>
<dd>Anzahl der aufzuweckenden Threads. Standard ist {{jsxref("Infinity", "+Infinity")}}.</dd>
</dl>
<h3 id="Rückgabewert">Rückgabewert</h3>
<p>Anzahl an geweckten Threads.</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 Tread nach dem Schreiben auf.</p>
<pre class="brush: js">console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(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.notify', 'Atomics.notify')}}</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.notify")}}</p>
<h2 id="Siehe_auch">Siehe auch</h2>
<ul>
<li>{{jsxref("Atomics")}}</li>
<li>{{jsxref("Atomics.wait()")}}</li>
</ul>
|