New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add mulithreading support - part 1 #3114
Merged
WojciechMazur
merged 22 commits into
scala-native:main
from
WojciechMazur:feature/multithreading-part1
Jan 29, 2023
Merged
Add mulithreading support - part 1 #3114
WojciechMazur
merged 22 commits into
scala-native:main
from
WojciechMazur:feature/multithreading-part1
Jan 29, 2023
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ScalaNative projects base on system property for easier interaction with CI
…e new threads and conversion between managed/unmanged execution
…ads support. Provide glue code for ThreadLocalStorage of current thread handles
Add NativeThread implementations: PosixThread and WindowsThread Add missing or fix invalid bindings to pthread/Windows.h types Implement waiting for termination of non-deamon threads using onExit hook
…ompiling native sources with multithreading support
… between Scala2 and Scala3. Share common implementaiton between the two
Move ThreadUtil.h to GC shared directory. Normalize its API
- Implement StopTheWorld events using combination of signal handlers(unix) / exception filters(windows) triggered by memory access violation on safepoint polling and by modifing mutator thread state upon call to or return from extern function (unmanaged context) - Implement synchronization mechanism and safepoint arming - Store references to all mutator threads
… GC threads synchronization
…k with multithreaded env
…to match Scala 2 behaviour
…supported. Otherwise LLVM can produce infinite loops
… higher priority then exception filter
This is exciting news @WojciechMazur! |
6 tasks
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The first part of merged multithreading support, based on cherry-picks from the development branch https://github.com/WojciechMazur/scala-native/tree/multithreading/develop
Included minimal functionally:
isMultithreadEnabled
entry in NativeCofngi in LinktimeInfojava.lang.Thread
methods and its companions:java.lang.ThreadGroup
java.lang.ThreadLocal
java.lang.InheritableThreadLocal
ScalaNativeGC.h
interface used to implement ScalaNative and GC interactionNone
Boehm
Immix
Follow-up PRs would include core features, eg. synchronization, atomics, threads parking, and finally implementation of
java.util.concurrent
/scala.conccurrent