Just some thoughts on this thread which I have been following with some 
interest.  The first is a question: when did the the RexxQueue class 
appear or has it always been there and I just didn't notice it?  It 
appears to be an OO way - objects and methods - of dealing with the 
external data queue as opposed to the classic way - keywords (pull, 
push, queue) and functions (queued(), rxqueue()).  Do I have that right?

Secondly, I have mixed feelings about MakeArray removing the lines.  I 
believe all the MakeArray methods for other classes leave the source 
object unmodified so this would be an exception.  On the other hand, 
being able to do a DO ... OVER and having the queue empty when it 
completes is certainly attractive.  Anyone else have any thoughts on this?

Rick McGuire wrote:
> My intent for the makearray method was for it to remove the lines from
> queue, not leave them in.  The intent here is to be able to use a DO
> OVER loop to iterate over the lines in the queue.  So remove the line
> that put it back.  I'd also recommend making just a single call to
> queued with a temporary variable.  Since that has to make an
> interprocess call to the queue server, that can be sort of an
> expensive operation.
> 
> The guarded is not sufficient to protect the queue, which can be
> accessed not just from another thread, but also from another PROCESS.
> Guarded is the default behavior, so adding that doesn't really do
> anything. I'm not too worried about another thread/process writing
> information to the queue.  For that situation, just query the number
> of lines and return that many lines as a snapshot.  It is possible
> that another thread or process might remove lines while the loop is
> executing.  If the loop doesn't end up finding a line in the queue
> when pull() is called, .nil we be returned.  You can use that to just
> terminate reading and return whatever you have.
> 
> In practice, this is not likely to to be any more of a problem than
> the equivalent loop that people normally use for reading command
> output that has been captured with the RXQUEUE pipe filter.
> 
> Rick
> 
> On Wed, Aug 13, 2008 at 2:01 AM, Sahananda (Jon) Wolfers
> <[EMAIL PROTECTED]> wrote:
> 
>>The approach I am thinking of taking for the makearray is this:
>>
>>/* -------------------------------------------------------------------------
>>*/
>>::method makearray guarded
>>/* -------------------------------------------------------------------------
>>*/
>>arr = .array~new(self~queued)
>>do i = 1 to self~queued
>>   line = self~pull
>>   arr[i]=line
>>   self~queue(line)
>>end /* DO */
>>return arr
>>
>>which in itself seems reasonable enough and leaves the RexxQueue in the
>>state it started in, but what I am wondering is whether the guarded is
>>sufficient to prevent the rxqueue device writing to the queue through the
>>API from a concurrent thread whilst it is being cycled through?
>>
>>I'm not sure how I would test for this.
>>
>>thanks
>>
>>Jon
>>
>>-------------------------------------------------------------------------
>>This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
>>Build the coolest Linux based applications with Moblin SDK & win great
>>prizes
>>Grand prize is a trip for two to an Open Source event anywhere in the world
>>http://moblin-contest.org/redirect.php?banner_id=100&url=/
>>_______________________________________________
>>Oorexx-devel mailing list
>>Oorexx-devel@lists.sourceforge.net
>>https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>>
>>
> 
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
> 
> 

-- 
Gil Barmwater


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to