From bf8e099b9c8b3c60d60b3712b4fc97b052c39887 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:23 +0200 Subject: convert content to md --- .../sharedarraybuffer/bytelength/index.md | 62 ++++----- .../global_objects/sharedarraybuffer/index.md | 140 +++++++++------------ .../sharedarraybuffer/slice/index.md | 97 ++++++-------- 3 files changed, 125 insertions(+), 174 deletions(-) (limited to 'files/fr/web/javascript/reference/global_objects/sharedarraybuffer') diff --git a/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.md b/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.md index 6827b4c4ff..d84a957218 100644 --- a/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.md +++ b/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/bytelength/index.md @@ -11,49 +11,37 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/byteLength original_slug: Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/byteLength --- -
{{JSRef}}
+{{JSRef}} -

La propriété d'accesseur byteLength représente la longueur d'un {{jsxref("SharedArrayBuffer")}} exprimée en octets.

+La propriété d'accesseur **`byteLength`** représente la longueur d'un {{jsxref("SharedArrayBuffer")}} exprimée en octets. -
{{EmbedInteractiveExample("pages/js/sharedarraybuffer-bytelength.html")}}
+{{EmbedInteractiveExample("pages/js/sharedarraybuffer-bytelength.html")}} -

Syntaxe

+## Syntaxe -
sab.byteLength
+ sab.byteLength -

Description

+## Description -

La propriété byteLength est une propriété d'accesseur dont le mutateur associé vaut undefined. Autrement dit, cette propriété est en lecture seule. La valeur est établie lorsque le tableau partagé est construit et elle ne peut être modifiée par la suite.

+La propriété `byteLength` est une propriété d'accesseur dont le mutateur associé vaut `undefined`. Autrement dit, cette propriété est en lecture seule. La valeur est établie lorsque le tableau partagé est construit et elle ne peut être modifiée par la suite. -

Exemples

+## Exemples -
var sab = new SharedArrayBuffer(1024);
+```js
+var sab = new SharedArrayBuffer(1024);
 sab.byteLength; // 1024
-
- -

Spécifications

- - - - - - - - - - - - - - -
SpécificationStatutCommentaires
{{SpecName('ESDraft', '#sec-get-sharedarraybuffer.prototype.bytelength', 'SharedArrayBuffer.prototype.byteLength')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.builtins.SharedArrayBuffer.byteLength")}}

- -

Voir aussi

- - +``` + +## Spécifications + +| Spécification | Statut | Commentaires | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-get-sharedarraybuffer.prototype.bytelength', 'SharedArrayBuffer.prototype.byteLength')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.SharedArrayBuffer.byteLength")}} + +## Voir aussi + +- {{jsxref("SharedArrayBuffer")}} 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 --- -
{{JSRef}}
+{{JSRef}} -

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é.

+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é. -
-

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. Chrome a réactivé cet objet avec la version 67 pour les plateformes sur lesquelles des fonctionnalités sont présentes pour protéger des vulnérabilités telles que Spectre (« site-isolation feature »)

-
+> **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_ ») -
{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html")}}
+{{EmbedInteractiveExample("pages/js/sharedarraybuffer-constructor.html")}} -

Syntaxe

+## Syntaxe + new SharedArrayBuffer([length]) -
new SharedArrayBuffer([length])
-
+### Paramètres -

Paramètres

+- `longueur` + - : La taille, exprimée en octets, du tampon (_buffer_) de données qu'on souhaite créer. -
-
longueur
-
La taille, exprimée en octets, du tampon (buffer) de données qu'on souhaite créer.
-
+### Valeur de retour -

Valeur de retour

+Un nouvel objet `SharedArrayBuffer` de la taille donnée, dont les éléments sont initialisés à 0. -

Un nouvel objet SharedArrayBuffer de la taille donnée, dont les éléments sont initialisés à 0.

+## Description -

Description

+### Allouer et partager la mémoire -

Allouer et partager la mémoire

+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). -

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 et le clonage structuré.

+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. -

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 SharedArrayBuffer est bien le même bloc. Aussi, si un agent interagit avec cette zone, l'autre agent pourra voir les modifications.

- -
var sab = new SharedArrayBuffer(1024);
+```js
+var sab = new SharedArrayBuffer(1024);
 worker.postMessage(sab);
-
+``` -

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 -

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)}}.

+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)}}. -

Les API qui utilisent des objets SharedArrayBuffer

+### Les API qui utilisent des objets `SharedArrayBuffer` - +- {{domxref("WebGLRenderingContext.bufferData()")}} +- {{domxref("WebGLRenderingContext.bufferSubData()")}} +- {{domxref("WebGL2RenderingContext.getBufferSubData()")}} -

Obligation d'utiliser l'opérateur new

+### Obligation d'utiliser l'opérateur `new` -

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")}}.

+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")}}. -
var sab = SharedArrayBuffer(1024);
+```js example-bad
+var sab = SharedArrayBuffer(1024);
 // TypeError: appeler le constructeur natif SharedArrayBuffer sans
-// new est interdit
+// new est interdit +``` -
var sab = new SharedArrayBuffer(1024);
+```js example-good +var sab = new SharedArrayBuffer(1024); +``` -

Propriétés

+## Propriétés -
-
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.
-
+- `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`. -

Le prototype de SharedArrayBuffer

+## Le prototype de `SharedArrayBuffer` -

Toutes les instances de SharedArrayBuffer héritent de {{jsxref("SharedArrayBuffer.prototype")}}.

+Toutes les instances de `SharedArrayBuffer` héritent de {{jsxref("SharedArrayBuffer.prototype")}}. -

Propriétés

+### Propriétés -

{{page('fr/Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/prototype','Propriétés')}}

+{{page('fr/Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/prototype','Propriétés')}} -

Méthodes

+### Méthodes -

{{page('fr/Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/prototype','Méthodes')}}

+{{page('fr/Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/prototype','Méthodes')}} -

Spécifications

+## Spécifications - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}{{Spec2('ESDraft')}}
{{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}{{Spec2('ES8')}}Définition initiale.
+| Spécification | État | Commentaires | +| -------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}} | {{Spec2('ESDraft')}} | | +| {{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}} | {{Spec2('ES8')}} | Définition initiale. | -

Compatibilité des navigateurs

+## Compatibilité des navigateurs -

{{Compat("javascript.builtins.SharedArrayBuffer")}}

+{{Compat("javascript.builtins.SharedArrayBuffer")}} -

Voir aussi

+## Voir aussi - +- {{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/) diff --git a/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.md b/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.md index 57219bc3f2..5f2c128fc4 100644 --- a/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.md +++ b/files/fr/web/javascript/reference/global_objects/sharedarraybuffer/slice/index.md @@ -12,78 +12,63 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/slice original_slug: Web/JavaScript/Reference/Objets_globaux/SharedArrayBuffer/slice --- -
{{JSRef}}
+{{JSRef}} -

La méthode SharedArrayBuffer.prototype.slice() renvoie un nouvel objet {{jsxref("SharedArrayBuffer")}} dont le contenu est une copie des octets de l'objet SharedArrayBuffer courant entre un indice de début (inclus) et un indice de fin (exclus) (autrement dit, on copie une « tranche » du tampon courant). Si l'indice de début ou de fin est négatif, la position sera comptée à partir de la fin du tableau plutôt qu'à partir du début. L'algorithme appliqué est le même que {{jsxref("Array.prototype.slice()")}}.

+La méthode **`SharedArrayBuffer.prototype.slice()`** renvoie un nouvel objet {{jsxref("SharedArrayBuffer")}} dont le contenu est une copie des octets de l'objet `SharedArrayBuffer` courant entre un indice de début (inclus) et un indice de fin (exclus) (autrement dit, on copie une « tranche » du tampon courant). Si l'indice de début ou de fin est négatif, la position sera comptée à partir de la fin du tableau plutôt qu'à partir du début. L'algorithme appliqué est le même que {{jsxref("Array.prototype.slice()")}}_._ -
{{EmbedInteractiveExample("pages/js/sharedarraybuffer-slice.html")}}
+{{EmbedInteractiveExample("pages/js/sharedarraybuffer-slice.html")}} -

Syntaxe

+## Syntaxe -
sab.slice()
-sab.slice(début)
-sab.slice(début, fin)
+ sab.slice() + sab.slice(début) + sab.slice(début, fin) -

Paramètres

+### Paramètres -
-
début {{optional_inline}}
-
-

L'indice auquel commencer l'extraction (le début du tableau se situe à l'indice 0).

+- `début` {{optional_inline}} -

Si la valeur est négative, début indique le décalage à partir de la fin du tableau. Ainsi slice(-2) permettra d'extraire les deux derniers éléments du tableau.

+ - : L'indice auquel commencer l'extraction (le début du tableau se situe à l'indice 0). -

Si début est absent, slice commencera l'extraction à partir de l'indice 0.

-
-
fin {{optional_inline}}
-
-

L'indice auquel finir l'extraction. Attention, la valeur du tableau pour cet indice n'est pas incluse dans l'extraction.

+ Si la valeur est négative, `début` indique le décalage à partir de la fin du tableau. Ainsi `slice(-2)` permettra d'extraire les deux derniers éléments du tableau. -

Ainsi, slice(1,4) permettra d'extraire entre le deuxième et le quatrième élément (c'est-à-dire les trois éléments dont les indices sont respectivement 1, 2 et 3).

+ Si `début` est absent, `slice` commencera l'extraction à partir de l'indice 0. -

Si fin est un indice négatif, il indique le décalage à partir de la fin du tableau. Autrement dit slice(2,-1) permettra d'extraire les éléments du tampon à partir du troisième élément et jusqu'à l'avant-avant-dernier élément.

+- `fin` {{optional_inline}} -

Si fin est absent, slice réalisera l'extraction jusqu'à la fin de la séquence (sab.byteLength).

-
-
+ - : L'indice auquel finir l'extraction. Attention, la valeur du tableau pour cet indice n'est pas incluse dans l'extraction. -

Valeur de retour

+ Ainsi, `slice(1,4)` permettra d'extraire entre le deuxième et le quatrième élément (c'est-à-dire les trois éléments dont les indices sont respectivement 1, 2 et 3). -

Un nouvel objet {{jsxref("SharedArrayBuffer")}} qui contient les éléments extraits.

+ Si `fin` est un indice négatif, il indique le décalage à partir de la fin du tableau. Autrement dit `slice(2,-1)` permettra d'extraire les éléments du tampon à partir du troisième élément et jusqu'à l'avant-avant-dernier élément. -

Exemples

+ Si `fin` est absent, `slice` réalisera l'extraction jusqu'à la fin de la séquence (`sab.byteLength`). -
var sab = new SharedArrayBuffer(1024);
+### Valeur de retour
+
+Un nouvel objet {{jsxref("SharedArrayBuffer")}} qui contient les éléments extraits.
+
+## Exemples
+
+```js
+var sab = new SharedArrayBuffer(1024);
 sab.slice();    // SharedArrayBuffer { byteLength: 1024 }
 sab.slice(2);   // SharedArrayBuffer { byteLength: 1022 }
 sab.slice(-2);  // SharedArrayBuffer { byteLength: 2 }
 sab.slice(0,1); // SharedArrayBuffer { byteLength: 1 }
-
- -

Spécifications

- - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ESDraft', '#sec-sharedarraybuffer.prototype.slice', 'SharedArrayBuffer.prototype.slice')}}{{Spec2('ESDraft')}}Définition initiale avec ES2017.
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.builtins.SharedArrayBuffer.slice")}}

- -

Voir aussi

- - +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------------------- | +| {{SpecName('ESDraft', '#sec-sharedarraybuffer.prototype.slice', 'SharedArrayBuffer.prototype.slice')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.SharedArrayBuffer.slice")}} + +## Voir aussi + +- {{jsxref("SharedArrayBuffer")}} +- {{jsxref("Array.prototype.slice()")}} -- cgit v1.2.3-54-g00ecf