--=-1/uxTqj3vQ7r47rLW4Hd
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

It looks like I got too creative in 0.6.1 and consequently ran afoul of
a bug in the Ruby interpreter.  0.6.2 works around the bug and should be
entirely stable at this point.

Thanks to Young Hyun for his help in coming up with test cases.

=3D=3D what?

fastthread is a Ruby library which provides a faster (and
non-memory-leaking) C implementation of the concurrency primitives from
stdlib's thread.rb.  It aims to be 100% compatible with thread.rb's
public API.

So, how much faster?  In the single-threaded case, fastthread's version
of Mutex#lock and Mutex#synchronize are comparable in performance to
Thread.critical=3D and Thread.exclusive.  With multiple threads, it has an
additional advantage over Thread.critical in that entering a critical
section doesn't suspend any other threads unless they're competing for
the same lock.  (Compare that to Thread.critical, which stops all other
threads dead!)

I know a lot of folks have been avoiding stdlib's Mutex because all the
method calls killed performance.  But no more, with fastthread!  Why use
Thread.critical when you can use the real thing?

=3D=3D how?

Simply require 'fastthread' in addition to 'thread'.  If you want to
make fastthread optional (recommended!), do it this way:

        require 'thread'
        begin
          require 'fastthread'
        rescue LoadError
        end

This way, your program will still work on systems that don't have (or
don't need -- e.g. JRuby) fastthread, but you still get a performance
boost on systems where it's available.

=3D=3D where?

Gem:
http://moonbase.rydia.net/software/optimized-locking/fastthread-0.6.2.gem

Tarball:
http://moonbase.rydia.net/software/optimized-locking/fastthread-0.6.2.tgz

fastthread is also available on Rubyforge (and therefore the main gems
repository), courtesy of the Mongrel project:

https://rubyforge.org/frs/?group_id=3D1306

-mental

--=-1/uxTqj3vQ7r47rLW4Hd
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)

iD8DBQBFsBYLSuZBmZzm14ERApnXAKC6noxT9WIHOfZQR3H09qGu/k/0IQCaAgEe
wP41XprxuvmKMEsAZWNvvnM=
=WIgG
-----END PGP SIGNATURE-----

--=-1/uxTqj3vQ7r47rLW4Hd--