aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/index.md
diff options
context:
space:
mode:
authorjulieng <julien.gattelier@gmail.com>2021-08-03 08:03:23 +0200
committerSphinxKnight <SphinxKnight@users.noreply.github.com>2021-09-03 08:08:25 +0200
commitbf8e099b9c8b3c60d60b3712b4fc97b052c39887 (patch)
treec101746d082c9581c94f5937519c7d0e2f4af8cb /files/fr/web/javascript/reference/global_objects/sharedarraybuffer/index.md
parent844f5103992238c0c23203286dad16a466e89c97 (diff)
downloadtranslated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.tar.gz
translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.tar.bz2
translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.zip
convert content to md
Diffstat (limited to 'files/fr/web/javascript/reference/global_objects/sharedarraybuffer/index.md')
-rw-r--r--files/fr/web/javascript/reference/global_objects/sharedarraybuffer/index.md140
1 files changed, 59 insertions, 81 deletions
diff --git a/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/index.md b/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/index.md
index 16d95eeed7..dd3777c120 100644
--- a/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/index.md
+++ b/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/index.md
@@ -11,122 +11,100 @@ tags:
translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
original_slug: Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer
---
-<div>{{JSRef}}</div>
+{{JSRef}}
-<p>L'objet <strong><code>SharedArrayBuffer</code></strong> est utilisé afin de représenter un tampon de données binaires brutes générique de longueur fixe. Il est semblable à l'objet {{jsxref("ArrayBuffer")}} mais peut ici être utilisé pour créer différentes vues sur une même mémoire partagée. À la différence d'un <code>ArrayBuffer</code>, un <code>SharedArrayBuffer</code> ne peut pas être détaché.</p>
+L'objet **`SharedArrayBuffer`** est utilisé afin de représenter un tampon de données binaires brutes générique de longueur fixe. Il est semblable à l'objet {{jsxref("ArrayBuffer")}} mais peut ici être utilisé pour créer différentes vues sur une même mémoire partagée. À la différence d'un `ArrayBuffer`, un `SharedArrayBuffer` ne peut pas être détaché.
-<div class="note">
-<p><strong>Note :</strong> L'objet <code>SharedArrayBuffer</code> a été désactivé le 5 janvier 2018 par défaut pour l'ensemble des principaux navigateurs afin de réduire <a href="https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/">les failles Meltdown et Spectre</a>. <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=821270">Chrome a réactivé cet objet avec la version 67</a> pour les plateformes sur lesquelles des fonctionnalités sont présentes pour protéger des vulnérabilités telles que Spectre (« <em>site-isolation feature</em> »)</p>
-</div>
+> **Note :** L'objet `SharedArrayBuffer` a été désactivé le 5 janvier 2018 par défaut pour l'ensemble des principaux navigateurs afin de réduire [les failles Meltdown et Spectre](https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/). [Chrome a réactivé cet objet avec la version 67](https://bugs.chromium.org/p/chromium/issues/detail?id=821270) pour les plateformes sur lesquelles des fonctionnalités sont présentes pour protéger des vulnérabilités telles que Spectre (« _site-isolation feature_ »)
-<div>{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html")}}</div>
+{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html")}}
-<h2 id="Syntaxe">Syntaxe</h2>
+## Syntaxe
+ new SharedArrayBuffer([length])
-<pre class="syntaxbox">new SharedArrayBuffer([<var>length</var>])
-</pre>
+### Paramètres
-<h3 id="Paramètres">Paramètres</h3>
+- `longueur`
+ - : La taille, exprimée en octets, du tampon (_buffer_) de données qu'on souhaite créer.
-<dl>
- <dt><code>longueur</code></dt>
- <dd>La taille, exprimée en octets, du tampon (<em>buffer</em>) de données qu'on souhaite créer.</dd>
-</dl>
+### Valeur de retour
-<h3 id="Valeur_de_retour">Valeur de retour</h3>
+Un nouvel objet `SharedArrayBuffer` de la taille donnée, dont les éléments sont initialisés à 0.
-<p>Un nouvel objet <code>SharedArrayBuffer</code> de la taille donnée, dont les éléments sont initialisés à 0.</p>
+## Description
-<h2 id="Description">Description</h2>
+### Allouer et partager la mémoire
-<h3 id="Allouer_et_partager_la_mémoire">Allouer et partager la mémoire</h3>
+Pour partager une zone mémoire entre plusieurs objets {{jsxref("SharedArrayBuffer")}} d'un agent à un autre (ici un agent correspond au programme principal de la page web ou à l'un de ses _web workers_), on utilise [`postMessage`](/fr/docs/Web/API/Worker/postMessage) et [le clonage structuré](/fr/docs/Web/API/Web_Workers_API/Structured_clone_algorithm).
-<p>Pour partager une zone mémoire entre plusieurs objets {{jsxref("SharedArrayBuffer")}} d'un agent à un autre (ici un agent correspond au programme principal de la page web ou à l'un de ses <em>web workers</em>), on utilise <code><a href="/fr/docs/Web/API/Worker/postMessage">postMessage</a></code> et <a href="/fr/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">le clonage structuré</a>.</p>
+L'algorithme de clonage structuré permet d'envoyer des objets `SharedArrayBuffers` et `TypedArrays` vers `SharedArrayBuffers`. Dans les deux cas, l'objet `SharedArrayBuffer` est transmis au récepteur, ce qui crée un nouvel objet `SharedArrayBuffer`, privé, au sein de l'agent qui reçoit (comme avec  {{jsxref("ArrayBuffer")}}). Cependant, le bloc de mémoire référencé par les deux objets ` Shared``ArrayBuffer ` est bien le même bloc. Aussi, si un agent interagit avec cette zone, l'autre agent pourra voir les modifications.
-<p>L'algorithme de clonage structuré permet d'envoyer des objets <code>SharedArrayBuffers</code> et <code>TypedArrays</code> vers <code>SharedArrayBuffers</code>. Dans les deux cas, l'objet <code>SharedArrayBuffer</code> est transmis au récepteur, ce qui crée un nouvel objet <code>SharedArrayBuffer</code>, privé, au sein de l'agent qui reçoit (comme avec  {{jsxref("ArrayBuffer")}}). Cependant, le bloc de mémoire référencé par les deux objets <code>Shared</code><code>ArrayBuffer</code> est bien le même bloc. Aussi, si un agent interagit avec cette zone, l'autre agent pourra voir les modifications.</p>
-
-<pre class="brush: js">var sab = new SharedArrayBuffer(1024);
+```js
+var sab = new SharedArrayBuffer(1024);
worker.postMessage(sab);
-</pre>
+```
-<h3 id="Mettre_à_jour_et_synchroniser_la_mémoire_partagée_avec_les_opérations_atomiques">Mettre à jour et synchroniser la mémoire partagée avec les opérations atomiques</h3>
+### Mettre à jour et synchroniser la mémoire partagée avec les opérations atomiques
-<p>La mémoire partagée peut être créée et mise à jour de façon simultanée entre les <em>workers</em> et le <em>thread</em> d'exécution principal. Selon le système (le processeur, le système d'exploitation, le navigateur), cela peut prendre du temps avant que le changement soit propagé sur l'ensemble des contextes. Pour que la synchronisation s'effectue, on doit utiliser les opérations {{jsxref("Atomics", "atomiques", "", 1)}}.</p>
+La mémoire partagée peut être créée et mise à jour de façon simultanée entre les _workers_ et le _thread_ d'exécution principal. Selon le système (le processeur, le système d'exploitation, le navigateur), cela peut prendre du temps avant que le changement soit propagé sur l'ensemble des contextes. Pour que la synchronisation s'effectue, on doit utiliser les opérations {{jsxref("Atomics", "atomiques", "", 1)}}.
-<h3 id="Les_API_qui_utilisent_des_objets_SharedArrayBuffer">Les API qui utilisent des objets <code>SharedArrayBuffer</code></h3>
+### Les API qui utilisent des objets `SharedArrayBuffer`
-<ul>
- <li>{{domxref("WebGLRenderingContext.bufferData()")}}</li>
- <li>{{domxref("WebGLRenderingContext.bufferSubData()")}}</li>
- <li>{{domxref("WebGL2RenderingContext.getBufferSubData()")}}</li>
-</ul>
+- {{domxref("WebGLRenderingContext.bufferData()")}}
+- {{domxref("WebGLRenderingContext.bufferSubData()")}}
+- {{domxref("WebGL2RenderingContext.getBufferSubData()")}}
-<h3 id="Obligation_d'utiliser_l'opérateur_new">Obligation d'utiliser l'opérateur <code>new</code></h3>
+### Obligation d'utiliser l'opérateur `new`
-<p>Les constructeurs <code>SharedArrayBuffer</code> doivent être utilisés avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Si on appelle un constructeur <code>SharedArrayBuffer</code> comme une fonction, sans <code>new</code>, cela lèvera une exception {{jsxref("TypeError")}}.</p>
+Les constructeurs `SharedArrayBuffer` doivent être utilisés avec l'opérateur {{jsxref("Opérateurs/L_opérateur_new", "new")}}. Si on appelle un constructeur `SharedArrayBuffer` comme une fonction, sans `new`, cela lèvera une exception {{jsxref("TypeError")}}.
-<pre class="brush: js example-bad">var sab = SharedArrayBuffer(1024);
+```js example-bad
+var sab = SharedArrayBuffer(1024);
// TypeError: appeler le constructeur natif SharedArrayBuffer sans
-// new est interdit</pre>
+// new est interdit
+```
-<pre class="brush: js example-good">var sab = new SharedArrayBuffer(1024);</pre>
+```js example-good
+var sab = new SharedArrayBuffer(1024);
+```
-<h2 id="Propriétés">Propriétés</h2>
+## Propriétés
-<dl>
- <dt><code>SharedArrayBuffer.length</code></dt>
- <dd>La propriété de longueur pour le constructeur <code>SharedArrayBuffer</code> dont la valeur est 1.</dd>
- <dt>{{jsxref("SharedArrayBuffer.prototype")}}</dt>
- <dd>Le prototype permet d'ajouter des propriétés à l'ensemble des objets <code>SharedArrayBuffer</code>.</dd>
-</dl>
+- `SharedArrayBuffer.length`
+ - : La propriété de longueur pour le constructeur `SharedArrayBuffer` dont la valeur est 1.
+- {{jsxref("SharedArrayBuffer.prototype")}}
+ - : Le prototype permet d'ajouter des propriétés à l'ensemble des objets `SharedArrayBuffer`.
-<h2 id="Le_prototype_de_SharedArrayBuffer">Le prototype de <code>SharedArrayBuffer</code></h2>
+## Le prototype de `SharedArrayBuffer`
-<p>Toutes les instances de <code>SharedArrayBuffer</code> héritent de {{jsxref("SharedArrayBuffer.prototype")}}.</p>
+Toutes les instances de `SharedArrayBuffer` héritent de {{jsxref("SharedArrayBuffer.prototype")}}.
-<h3 id="Propriétés_2">Propriétés</h3>
+### Propriétés
-<p>{{page('fr/Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/prototype','Propriétés')}}</p>
+{{page('fr/Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/prototype','Propriétés')}}
-<h3 id="Méthodes">Méthodes</h3>
+### Méthodes
-<p>{{page('fr/Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/prototype','Méthodes')}}</p>
+{{page('fr/Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/prototype','Méthodes')}}
-<h2 id="Spécifications">Spécifications</h2>
+## Spécifications
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Spécification</th>
- <th scope="col">État</th>
- <th scope="col">Commentaires</th>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}</td>
- <td>{{Spec2('ES8')}}</td>
- <td>Définition initiale.</td>
- </tr>
- </tbody>
-</table>
+| Spécification | État | Commentaires |
+| -------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- |
+| {{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}} | {{Spec2('ESDraft')}} | |
+| {{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}} | {{Spec2('ES8')}} | Définition initiale. |
-<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
+## Compatibilité des navigateurs
-<p>{{Compat("javascript.builtins.SharedArrayBuffer")}}</p>
+{{Compat("javascript.builtins.SharedArrayBuffer")}}
-<h2 id="Voir_aussi">Voir aussi</h2>
+## Voir aussi
-<ul>
- <li>{{jsxref("Atomics")}}</li>
- <li>{{jsxref("ArrayBuffer")}}</li>
- <li><a href="/fr/docs/Web/JavaScript/Tableaux_typés">Les tableaux typés en JavaScript</a></li>
- <li><a href="/fr/docs/Web/API/Web_Workers_API">Web Workers</a></li>
- <li><a href="https://github.com/lars-t-hansen/parlib-simple">parlib-simple </a>– un bibliothèque simple qui fournit des abstractions pour synchroniser et distribuer des tâches</li>
- <li><a href="https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md">La mémoire partagée – un rapide tutoriel</a></li>
- <li><a href="https://hacks.mozilla.org/2016/05/a-taste-of-javascripts-new-parallel-primitives/">A Taste of JavaScript’s New Parallel Primitives – Mozilla Hacks (en anglais)</a></li>
-</ul>
+- {{jsxref("Atomics")}}
+- {{jsxref("ArrayBuffer")}}
+- [Les tableaux typés en JavaScript](/fr/docs/Web/JavaScript/Tableaux_typés)
+- [Web Workers](/fr/docs/Web/API/Web_Workers_API)
+- [parlib-simple ](https://github.com/lars-t-hansen/parlib-simple)– un bibliothèque simple qui fournit des abstractions pour synchroniser et distribuer des tâches
+- [La mémoire partagée – un rapide tutoriel](https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md)
+- [A Taste of JavaScript’s New Parallel Primitives – Mozilla Hacks (en anglais)](https://hacks.mozilla.org/2016/05/a-taste-of-javascripts-new-parallel-primitives/)