[Spread-users] prob. related to spread
jr at vertica.com
Fri Sep 8 12:30:18 EDT 2006
Isn't Spread's Event subsystem designed to help users deal with this?
There are other packages that provide similar support.
John Schultz wrote:
> Currently, the spread library ultimately is potentially blocking in both
> SP_receive and SP_*cast.
> You can mitigate this issue to some extent by using select() on the
> mailbox, which is a file descriptor, to test for incoming data and when
> there is room to write on the socket. However, select() will signal
> that the file descriptor is ready when there is *any* data to read,
> which can cause SP_receive to block if more still has to come across the
> client-daemon connection. Similarly, select() will signal write
> readiness the first time a single byte can be written to the file
> descriptor without blocking.
> You can further mitigate this problem by using either SP_poll or
> ioctl(FIONREAD) to test the amount of data ready to be read in a
> non-blocking manner and ioctl(FIONWRITE) (I think) to see how much can
> be written in a non-blocking manner. On the read side, you have no way
> of knowing how big the next message will be so you could still block but
> you can at least wait until there is a significant amount of data. On
> the write side, you should be able to wait until the file descriptor is
> open enough to send your entire message and not block at all. The
> harder question in those scenerios is how do you prevent your select()
> loop from spinning because from select()'s POV the file descriptor is
> ready for action. I don't have a good idea on that right this second.
> Maybe someone else on the list can chime in with a good idea?
> Good luck!
> John Schultz
> Spread Concepts
> Phn: 443 838 2200
> On Fri, 8 Sep 2006, Zahir Koradia wrote:
>> Hi Pankaj,
>> I am not very clear as to what you are looking for, but one thing that
>> did understand from your mail was that you dont want to block on
>> receive. There is function "SP_poll" which will allow you to poll your
>> mailbox if there are any mails in it. This is a non blocking call. So
>> once your "poll" says that you have something in you mailbox you can
>> go ahead and receive it. That way your receive will not block since
>> you know there is something waiting for you in the mailbox. I am not a
>> frequent user of spread and so am not aware if the send also blocks.
>> Logically speaking a send should not block.
>> Hope this helps
>> Zahir Koradia
>> On 9/8/06, Pankaj Bhardwaj <pankajb83 at yahoo.co.in> wrote:
>>> Hi Sir/Madam,
>>> > I am having some prob. working with spread.
>>> > I am using the spread server for communication.I have to develop
>>> > client code which can send and receive data anytime.
>>> > My probs.
>>> > 1) I will be able to receive data and send that data
>>> > 2) I will be able to create data and send that data.
>>> > but these two things will be able to work simultaneously.
>>> > like receive is a blocking call , if at that time i want to send data
>>> > by creating myself i am able to do that.
>>> > The prob i faced is that my program blocks in receive call. or in
>>> > send.call
>>> > until i do not send any data i am not able to receive any data.
>>> > plz help us
>>> Here's a new way to find what you're looking for - Yahoo! Answers
>>> Send FREE SMS to your friend's mobile from Yahoo! Messenger Version
>>> 8. Get
>>> it NOW
>>> Spread-users mailing list
>>> Spread-users at lists.spread.org
>> Spread-users mailing list
>> Spread-users at lists.spread.org
> Spread-users mailing list
> Spread-users at lists.spread.org
More information about the Spread-users