thanks again bob, the picture is now clear to me.

warm regards,
srikanth

> ----------
> From:         Bob Crothers[SMTP:bob@cstoneindy.com]
> Reply To:     c400-l@midrange.com
> Sent:         Monday, June 03, 2002 6:10 PM
> To:   c400-l@midrange.com
> Subject:      RE: [C400-L] select()
>
> Srikanth,
>
> I cant really help you much with the mechanics of threads on the
> AS/400.  I've done a LOT of multi-threaded programming, but it has all
> been Win32 based.
>
> But I can tell you there is no real difference between a "thread" and a
> "worker thread".  It is just how you use them.
>
> You can create a thread for each client connecting to your server.
> That thread would then handle everything associated with that client
> and basically act like none of the other threads/clients exist.  This
> is by far the easiest model.
>
> With "worker threads" or also known as a "thread pool", your server
> starts a fixed number of threads.  Then when there is work to be done,
> the main thread allocates that work to one of these worker threads.
> That thread then handles a unit of work (typically a transaction) for
> the client and then passes the socket back to the main thread.  The
> worker thread then back into the "available thread pool".
>
> Sort of like the line for tellers at the bank.  There are 5 tellers and
> only one door into the lobby.  When you enter the lobby, you get into
> line until one of the tellers (worker threads) is available.  The
> teller then handles your transaction and you leave and the teller then
> goes to the next person in line.  If nobody is in line, they just stand
> there waiting.
>
> Bob
>
> -----Original Message-----
> From: c400-l-admin@midrange.com [mailto:c400-l-admin@midrange.com]On
> Behalf Of Srikanth_D
> Sent: Sunday, June 02, 2002 11:09 PM
> To: c400-l@midrange.com
> Subject: RE: [C400-L] select()
>
> thanks a lot bob, i was out on weekend so this delay in response.
> i got your point.
>
> i am still in dark regarding allocating a thread/worker thread, i am
> using
> pthread_create() . what exactly is pthread_create(), a worker thread or
> am i
> allocating a thread. to be honest i am a beginner in multithreaded
> programming, if you can pass on URLs/any documents on multithreading on
> AS/400 it will be of great help.
>
> best rgds.,
> srikanth d
>
>
> > ----------
> > From:         Bob Crothers[SMTP:bob@cstoneindy.com]
> > Reply To:     c400-l@midrange.com
> > Sent:         Friday, May 31, 2002 8:02 PM
> > To:   c400-l@midrange.com
> > Subject:      RE: [C400-L] select()
> >
> > Srikanth,
> >
> > If you make your server app multi-threaded, you wont have to mess
> with
> > select() at all.
> >
> > Exactly how you structure your app will depend on many things like
> are
> > the connections persistent or "connect, do a single transaction,
> > disconnect"?
> >
> > If they are persistent, what kind of volume?
> >
> > Answers to these questions will help you determine your threading
> > model.  Eg: Simply allocate a thread to service each client or use
> > "worker" threads.  Allocating a thread per client works well when a)
> > number of concurrent clients is small -or-b) volume from each client
> is
> > high -or- c) you want to keep things simple and performance isn't an
> > issue.
> >
> > Regardless of the thread model you use, the socket logic is fairly
> > simple:
> >
> > In the main listener thread:
> >
> > 1) bind()
> > 2) listen()           // wait for a new connection request
> > 3) accept()   // get the new connect request
> > 4) givedescriptor()   //set up to pass the socket to a thread
> > 5)                    // depending on thread model, figure out what
> thread
> > to send the
> > socket over to
> > 6) Go back up and do your listen() again and wait for next connect
> > request.
> >
> > Then in the processing threads:
> >
> > 1) takedescriptor()
> > 2) now act like the rest of the world doesn't exist.  Use blocking
> > send/receives etc.
> >
> > If you are dealing with a lot of clients, the above logic will have
> to
> > be modified somewhat, but the concept is similar.
> >
> > I use give/takedescriptor because when I wrote the socket my server
> > that runs on the as/400, "threads" didn't exist in os/400.  So I had
> to
> > use jobs instead of threads and the give/takedescriptor was the only
> > way to pass the sockets between jobs.
> >
> > In the PC world, there are much easier ways to pass a socket between
> > threads and if they are available for you to use on the AS/400, you
> > should probably use them.
> >
> > Regards,
> > Bob Crothers
> > Cornerstone Communications
> > http://www.cstoneindy.com
> >
> >
> >
> >
> > -----Original Message-----
> > From: c400-l-admin@midrange.com [mailto:c400-l-admin@midrange.com]On
> > Behalf Of Srikanth_D
> > Sent: Friday, May 31, 2002 4:34 AM
> > To: c400-l@midrange.com
> > Subject: [C400-L] select()
> >
> > hi all,
> >
> > i am a little confused on how to use select() in a socket program.
> here
> > is
> > the deal.
> >
> > client connects to a server to accomplish a transaction, let us say
> > account
> > balance enquiry. right now my code blocks on a send() and recv(), for
> > e.g.
> > client send()s the account number and blocks on a recv() to get the
> > balance
> > of the account. i would like to eliminate these blocking. i think
> using
> > select() would be the choice for that, but what would be the basis to
> > set
> > values to the struct timeval which is the fifth parameter in
> select().
> > can i
> > use select() in a multithreaded environment. for complex transactions
> > (like
> > fund transfer between two accounts) i have various send() and recv(),
> > do i
> > need to code select() before each send() and recv().
> >
> > please help me on this.
> >
> > thanks in advance.
> > -srikanth d
> >
> ***********************************************************************
> > ***
> > This email (including any attachments) is intended for the sole use
> of
> > the
> > intended recipient/s and may contain material that is CONFIDENTIAL
> AND
> > PRIVATE COMPANY INFORMATION. Any review or reliance by others or
> > copying or
> > distribution or forwarding of any or all of the contents in this
> > message is
> > STRICTLY PROHIBITED. If you are not the intended recipient, please
> > contact
> > the sender by email and delete all copies; your cooperation in this
> > regard
> > is appreciated.
> >
> ***********************************************************************
> > ***
> > _______________________________________________
> > This is the C programming iSeries / AS400 (C400-L) mailing list
> > To post a message email: C400-L@midrange.com
> > To subscribe, unsubscribe, or change list options,
> > visit: http://lists.midrange.com/cgi-bin/listinfo/c400-l
> > or email: C400-L-request@midrange.com
> > Before posting, please take a moment to review the archives
> > at http://archive.midrange.com/c400-l.
> >
> > _______________________________________________
> > This is the C programming iSeries / AS400 (C400-L) mailing list
> > To post a message email: C400-L@midrange.com
> > To subscribe, unsubscribe, or change list options,
> > visit: http://lists.midrange.com/cgi-bin/listinfo/c400-l
> > or email: C400-L-request@midrange.com
> > Before posting, please take a moment to review the archives
> > at http://archive.midrange.com/c400-l.
> >
> ***********************************************************************
> ***
> This email (including any attachments) is intended for the sole use of
> the
> intended recipient/s and may contain material that is CONFIDENTIAL AND
> PRIVATE COMPANY INFORMATION. Any review or reliance by others or
> copying or
> distribution or forwarding of any or all of the contents in this
> message is
> STRICTLY PROHIBITED. If you are not the intended recipient, please
> contact
> the sender by email and delete all copies; your cooperation in this
> regard
> is appreciated.
> ***********************************************************************
> ***
> _______________________________________________
> This is the C programming iSeries / AS400 (C400-L) mailing list
> To post a message email: C400-L@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/c400-l
> or email: C400-L-request@midrange.com
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/c400-l.
>
> _______________________________________________
> This is the C programming iSeries / AS400 (C400-L) mailing list
> To post a message email: C400-L@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/c400-l
> or email: C400-L-request@midrange.com
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/c400-l.
>
**************************************************************************
This email (including any attachments) is intended for the sole use of the
intended recipient/s and may contain material that is CONFIDENTIAL AND
PRIVATE COMPANY INFORMATION. Any review or reliance by others or copying or
distribution or forwarding of any or all of the contents in this message is
STRICTLY PROHIBITED. If you are not the intended recipient, please contact
the sender by email and delete all copies; your cooperation in this regard
is appreciated.
**************************************************************************


This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2019 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].