Skip to content

Conversation

@lwoggardner
Copy link
Contributor

Thanks for taking the previous pull. This one makes the documentation a bit more consistent for the new approach.

I'm happy with being credited via the git history but equally happy to be listed as an author if you want. I'll leave it up to you - details as per my github profile.

PS. If you want to prerelease to rubygems apparently just needs the version to have an alpha character in it.
http://guides.rubygems.org/patterns/#prerelease-gems

If your Strand is being resumed externally, eg by receiving events
from an event machine connection, it is possible that these
resumes will occur while Strand is yielded in #pass or #sleep

This change adds Strand#safe_yield that queues the resumes until
we find the one we want. Strand#yield is changed to immediately
return any previously queued resumes before calling Fiber#yield.
ensure that Strand::ConditionVariable only wakes up
to the signal or timeout and not to an out of order resume

also store the requeued resumes in instance variable on
Strand class instead of in Strand local storage, so that
condition variables can be waited from non Strand Fibers
Specs for alive, local storage, pass, sleep
Strand.sleep allow nil to mean sleep forever (rather than error)
Raise TypeErrors for local storage that cannot be converted to symbols
Remove jeweler in favour of bundler's integrated rake tasks
Put gem configuration in strand.gemspec, remove Gemfile.lock
this seems to be recommended way to deal with development
(as distinct from use) of library type gems
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant