# Native threads in ruby

**URL:** <https://www.ruby-forum.com/t/native-threads-in-ruby/126211>\
**Category:** Ruby\
**Created:** [January 16, 2008, 11:35am UTC](https://www.ruby-forum.com/t/native-threads-in-ruby/126211 "2008-01-16T11:35:59Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![rpflaum](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/d2c977/32.png) [@rpflaum](https://www.ruby-forum.com/u/rpflaum)\
**Post date:** [January 16, 2008, 11:35am UTC](https://www.ruby-forum.com/t/native-threads-in-ruby/126211/1 "2008-01-16T11:35:59Z")

</div>

Is there anyway possible, one can make use of native threads in Ruby?  
Maybe by interfacing with C or Java?

---

<div class="post-metadata">

**Author:** ![rpflaum](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/d2c977/32.png) [@rpflaum](https://www.ruby-forum.com/u/rpflaum)\
**Post date:** [January 16, 2008, 1:25pm UTC](https://www.ruby-forum.com/t/native-threads-in-ruby/126211/2 "2008-01-16T13:25:11Z")

</div>

On Jan 16, 2008 6:12 AM, Charles Oliver N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> a command-line option:
> 
> -J-Djruby.thread.pooling=true
> 
> - Charlie

–enable-threading will put 1.8.6 in native thread mode, but it is  
unadvised  
to do so. Ruby 1.9 does uses native threads as well as a construct  
called  
Fibers, which I think are a better implementation of 1.8.6’s green  
threads.

Jason

---

<div class="post-metadata">

**Author:** ![rpflaum](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/d2c977/32.png) [@rpflaum](https://www.ruby-forum.com/u/rpflaum)\
**Post date:** [January 16, 2008, 12:13pm UTC](https://www.ruby-forum.com/t/native-threads-in-ruby/126211/3 "2008-01-16T12:13:16Z")

</div>

Rick P. wrote:

> Is there anyway possible, one can make use of native threads in Ruby?  
> Maybe by interfacing with C or Java?

JRuby supports native threads today, where each Ruby thread maps to one  
native thread. There’s also a second option, native thread pooling,  
where the number of native threads used is only ever as high as the  
number of threads running concurrently.

Normal native thread support is the default. Pooling can be enabled with  
a command-line option:

-J-Djruby.thread.pooling=true

- Charlie

---

<div class="post-metadata">

**Author:** ![rpflaum](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/d2c977/32.png) [@rpflaum](https://www.ruby-forum.com/u/rpflaum)\
**Post date:** [January 16, 2008, 8:03pm UTC](https://www.ruby-forum.com/t/native-threads-in-ruby/126211/4 "2008-01-16T20:03:58Z")

</div>

Tom M wrote:

> I believe that while 1.9 does support native threads, their benefit is  
> minimal as there is a global interpreter lock most of the time. Is  
> that correct?

That is correct. Ruby 1.9 runs with native threads, but they don’t run  
concurrently.

- Charlie

---

<div class="post-metadata">

**Author:** ![rpflaum](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/d2c977/32.png) [@rpflaum](https://www.ruby-forum.com/u/rpflaum)\
**Post date:** [January 16, 2008, 5:26pm UTC](https://www.ruby-forum.com/t/native-threads-in-ruby/126211/5 "2008-01-16T17:26:27Z")

</div>

On Jan 16, 7:23 am, Jason R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > - Charlie
> 
> –enable-threading will put 1.8.6 in native thread mode, but it is unadvised  
> to do so. Ruby 1.9 does uses native threads as well as a construct called  
> Fibers, which I think are a better implementation of 1.8.6’s green threads.
> 
> Jason

I believe that while 1.9 does support native threads, their benefit is  
minimal as there is a global interpreter lock most of the time. Is  
that correct?

---

<div class="post-metadata">

**Author:** ![rpflaum](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/d2c977/32.png) [@rpflaum](https://www.ruby-forum.com/u/rpflaum)\
**Post date:** [January 17, 2008, 11:33am UTC](https://www.ruby-forum.com/t/native-threads-in-ruby/126211/6 "2008-01-17T11:33:58Z")

</div>

We’ve done the best job we can making JRuby compatible with Ruby  
1.8.6, and hopefully others can attest to that. The only major feature  
missing is Continuations, which are a little sketchy with native  
threads anyway.

As for 1.9 features, we already have some. For example, we have a port  
of the regexp engine 1.9 uses, and a native-thread-backed  
implementation of Fibers. We probably won’t include more before the  
JRuby 1.1 release later this month, but we’ll add as many as possible  
after that, including all of 1.9’s specific optimizations and support  
for abitrarily-encoded strings.

- Charlie

---

<div class="post-metadata">

**Author:** ![rpflaum](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/d2c977/32.png) [@rpflaum](https://www.ruby-forum.com/u/rpflaum)\
**Post date:** [January 17, 2008, 2:18am UTC](https://www.ruby-forum.com/t/native-threads-in-ruby/126211/7 "2008-01-17T02:18:33Z")

</div>

It looks like I’ll be using JRuby. Does JRuby have all the features that  
Ruby 1.8.6 has? Are there any plans to incorporate the features in 1.9  
to JRuby?

Thanks,  
Ryan
