about summary refs log tree commit diff
path: root/library/std/src/sys/wasm/mod.rs
diff options
context:
space:
mode:
authorDylan DPC <dylan.dpc@gmail.com>2020-10-16 02:10:11 +0200
committerGitHub <noreply@github.com>2020-10-16 02:10:11 +0200
commitdcf972a2be2e122ee3e7cc86bbf4ff6751055337 (patch)
treeac47f5daca0eab7f8b9283827d1da4d6a480a7a8 /library/std/src/sys/wasm/mod.rs
parent0e4d19603bcea4e5cc54fee460c0582f9b31cb3f (diff)
parentf84f01c0148cfb2451775fcbf299a2e7b10b1e81 (diff)
downloadrust-dcf972a2be2e122ee3e7cc86bbf4ff6751055337.tar.gz
rust-dcf972a2be2e122ee3e7cc86bbf4ff6751055337.zip
Rollup merge of #77619 - fusion-engineering-forks:wasm-parker, r=dtolnay
Use futex-based thread-parker for Wasm32.

This uses the existing `sys_common/thread_parker/futex.rs` futex-based thread parker (that was already used for Linux) for wasm32 as well (if the wasm32 atomics target feature is enabled, which is not the case by default).

Wasm32 provides the basic futex operations as instructions: https://webassembly.github.io/threads/syntax/instructions.html

These are now exposed from `sys::futex::{futex_wait, futex_wake}`, just like on Linux. So, `thread_parker/futex.rs` stays completely unmodified.
Diffstat (limited to 'library/std/src/sys/wasm/mod.rs')
-rw-r--r--library/std/src/sys/wasm/mod.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/library/std/src/sys/wasm/mod.rs b/library/std/src/sys/wasm/mod.rs
index 18295e1129a..11c6896f050 100644
--- a/library/std/src/sys/wasm/mod.rs
+++ b/library/std/src/sys/wasm/mod.rs
@@ -55,6 +55,8 @@ cfg_if::cfg_if! {
         pub mod mutex;
         #[path = "rwlock_atomics.rs"]
         pub mod rwlock;
+        #[path = "futex_atomics.rs"]
+        pub mod futex;
     } else {
         #[path = "../unsupported/condvar.rs"]
         pub mod condvar;