I have a class like this to perform http get transactions--

CHttpClient : public CBase, public MHTTPDataSupplier, public MHTTPAuthenticationCallback,public MHTTPTransactionCallback
static CHttpClient* NewL();

void InvokeHttpMethodL(TDesC8& aUri, TBool aiSReqbody, TDesC& reqfilename, TDesC& respfilename);
void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue);
void SetupConnectionL();


RHTTPSession iSession;
RHTTPTransaction iTransaction;
RSocketServ iSocketServ;
RConnection iConnection;
RFile iReqBodyFile;
HBufC8* iReqBodySubmitBuffer;
TPtr8 iReqBodySubmitBufferPtr;
RFile iRespBodyFile;
TInt iFilePos;
TInt iFileOffset;

void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);

for every get, i create an instance of this class and issue my Invokehttpmethod(). So there are say 8-9 sessions created and in the MHFRunL when i receive the THTTPEvent::ESucceeded, I will save the response body in the file associated to each of the instances.

I have a question on the way these sessions re scheduled. Had i created 9 threads and instantiated an object of CHttpClient in each of the threads to perform my task and if i had created 9 instances in a for loop and submitted my transaction, does it make a difference as far as the http download is concerned?

When i create multiple sessions internally how are they treated?

If they are treated the same in both the above cases(with and without threads) I may as well get away with threads. What is the optimization in speed that i achieve with threads?

However my next step is to integrate the downloaded file with a CImageDecoder object to render them, which is again an active object..will get to that once i decide on how to design the downloading :-((..