# Multi-Threading

Web SDK is single-thread by default starting from the 2.2.0 release, though it's possible to enable multi-threading in order to have better performances.

### Enable WASM POSIX Threads

The flag to enable multi-threading is a boolean, here's how to set it:

{% tabs %}
{% tab title="Headless" %}

```javascript
await importKeylessWebAssemblyModule({
  ...,
  pthreads: true
})
```

{% endtab %}

{% tab title="Web Components" %}

```html
<kl-auth
  ...
  enable-wasm-pthreads
></kl-auth>
```

{% endtab %}
{% endtabs %}

### Security Headers

The multi-threaded variant requires two security headers to run, if these headers are unset or have unfit values you won't be able to use the Keyless Web SDK.

| Name                         | Value        |
| ---------------------------- | ------------ |
| Cross-Origin-Embedder-Policy | require-corp |
| Cross-Origin-Opener-Policy   | same-origin  |

In case you are loading resources from an external domain, make sure to load those resources in crossorigin, please read [Cross-Origin-Embedder-Policy: Avoiding Blockage With CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Embedder-Policy#avoiding_coep_blockage_with_cors) for more details.
