# Four Rinda Questions

**URL:** <https://www.ruby-forum.com/t/four-rinda-questions/48462>\
**Category:** Ruby\
**Created:** [November 20, 2005, 10:40pm UTC](https://www.ruby-forum.com/t/four-rinda-questions/48462 "2005-11-20T22:40:00Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![a.griesser](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e5b9ba/32.png) [@a.griesser](https://www.ruby-forum.com/u/a.griesser)\
**Post date:** [November 20, 2005, 10:40pm UTC](https://www.ruby-forum.com/t/four-rinda-questions/48462/1 "2005-11-20T22:40:00Z")

</div>

Rinda looks very interesting, but appears to differ in puzzling ways  
from the Linda model descriptions of Carriero and Gelernter. Perhaps  
someone has read the source and can answer these questions:

- Does Rinda support ‘live’ tuples, in the Gelernter sense of  
containing running processes, rather than the Rinda::TupleEntry  
.alive? sense of ‘not cancelled and not expired’?

- Can somebody explain Tuple expiration? I mean Rinda::SimpleRenewer,  
Rinda::TupleSpace.new(period), etc. Based on the docs, it sounds like  
my Tuples should have vanished, but they don’t seem to in practice.  
Frankly I don’t want part of my computational state disappearing! Why  
would anybody? Can this feature be turned off/on?

- What do the ‘sec’ arguments in Rinda::TupleSpace .read and .take do?  
They don’t seem to time out requests that go to sleep waiting for an  
existing Tuple.

- What do the blocks for Rinda::TupleSpace .read and .take do?

Thanks!

---

<div class="post-metadata">

**Author:** ![a.griesser](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e5b9ba/32.png) [@a.griesser](https://www.ruby-forum.com/u/a.griesser)\
**Post date:** [November 21, 2005, 7:33pm UTC](https://www.ruby-forum.com/t/four-rinda-questions/48462/2 "2005-11-21T19:33:50Z")

</div>

On Nov 20, 2005, at 1:38 PM, entropic\_rune wrote:

> Rinda looks very interesting, but appears to differ in puzzling ways  
> from the Linda model descriptions of Carriero and Gelernter. Perhaps  
> someone has read the source and can answer these questions:
> 
> - Does Rinda support ‘live’ tuples, in the Gelernter sense of  
> containing running processes, rather than the Rinda::TupleEntry  
> .alive? sense of ‘not cancelled and not expired’?

No. You could make something similar by using references to a Thread.

> - Can somebody explain Tuple expiration? I mean Rinda::SimpleRenewer,  
> Rinda::TupleSpace.new(period), etc. Based on the docs, it sounds like  
> my Tuples should have vanished, but they don’t seem to in practice.  
> Frankly I don’t want part of my computational state disappearing! Why  
> would anybody? Can this feature be turned off/on?

nil says “This tuple never expires”.

false says “This tuple is always expired”.

A Numeric is treated as a TTL in seconds.

A SimpleRenewer sets a recheck interval, so the liveness will be  
checked every so-many seconds.

> - What do the ‘sec’ arguments in Rinda::TupleSpace .read and .take do?  
> They don’t seem to time out requests that go to sleep waiting for an  
> existing Tuple.

They should cause read/take to raise a RequestExpiredError when the  
tuple expires. I’m not sure why it wouldn’t, I haven’t used it yet.

> - What do the blocks for Rinda::TupleSpace .read and .take do?

They yield the WaitTemplateEntry created for reading/taking from the  
TupleSpace. You could use it to cancel the action.
