WAMR has two pthread implementations available as of writing this.
These implementations are not ABI-compatible. You at least need to rebuild your wasm modules when migrating from one pthread implementation to another.
For new users, we recommend to use (or at least experiment) the new wasi-threads based implementation. In future, we might remove the old implementation.
The pthread API is directly implemented as host functions in WAMR.
(WAMR_BUILD_LIB_PTHREAD
)
Only minimum API is implemented as of writing this. (eg. no pthread barriers)
WAMR-specific ABI
The pthread API is implemented in wasi-libc, based on wasi-threads and WASM threads proposals.
It requires a recent-enough version of wasi-libc. The experimental support is included in wasi-sdk 20.0 or later. To build your application, cmake users can use the cmake toolchain file provided by wasi-sdk.
wasi-threads is implemented as a host function in WAMR.
(WAMR_BUILD_LIB_WASI_THREADS
)
The ABI is specified in wasi-threads proposal. You can run the same wasm modules on other runtimes which implement the proposal. (wasmtime, toywasm, ...)
Basically more feature-rich and complete than WAMR lib-pthread.
EXCEPTION: pthread_exit
is not available as of writing this.
If pthread_exit
is important for your use cases, please speak up in
the GitHub issue.
EXCEPTION: For threads created by pthread_create
, the AUX stack
(aka C shadow stack) overflow detection mechanism is disabled as of
writing this.
If it's important for your use cases, please speak up in the
GitHub issue.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。