Added sleep:
and sleepMillis:
methods in System
#45
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.
When testing
System>>#ticks
andSystem>>#time
, I was looking for a way to somewhat predictably wait a specific amount of time, regardless of the interpreter's evaluation speed.Currently the only way to make the interpreter wait is using a busy wait (something like:
1000000 timesRepeat: nil
), which is not ideal.Since thread-sleeping is a commonly available operation, I figured that we could probably expose it to SOM programs to allow them to pause execution efficiently.
So this PR proposes to add the
System>>#sleepMillis:
primitive, to stop evaluating the program for the given amount of time in milliseconds (the only accepted type of argument would be a positiveInteger
).This PR also includes the
System>>#sleep:
method, which stops the program for the given amount of time in seconds, rather than in milliseconds, and is implemented in terms ofSystem>>#sleepMillis:
.