W3C home > Mailing lists > Public > www-lib@w3.org > January to March 2002

Support for MultiThread

From: jayprakash <jayprakash@opussoft.com>
Date: Mon, 18 Mar 2002 13:10:44 +0530
To: <www-lib@w3.org>
Message-ID: <DJELJKAIFJHGOPMICEIAAEBGCAAA.jayprakash@opussoft.com>

Hello , 

1) is www-lib support multithread application ? 
2) can I init in one thread and post from other ? 

we have tried it but it doesn't seems to be working . 
if we init in one thread then all the post from that thread works. 
but from other thread it blocks in event loop GetMesssage


waiting for reply .....

Thanks and Regards 
Jai 


////////////////////////////////

bool gIsDone = false ; 
DWORD WINAPI ThreadCheck(  LPVOID lpParameter ) 
{

	if ( ! gIsDone ) 
	{
		WaitForSingleObject( ( HANDLE ) lpParameter, INFINITE ) ;
	}

	CoInitialize(NULL);

	double lStartTime = GetTime();		

	long i = 0 ; 
	do 
	{
	    /* Create a new premptive client */
	    HTProfile_newNoCacheClient("HTTPTest", "1.0");		

	    /* Add our own filter to handle termination */	
	    HTNet_addAfter(terminate_handler, NULL, NULL, HT_ALL, HT_FILTER_LAST);
	
	    HTHost_setEventTimeout(20000);
	
	    // Delete all Registered proxies in libwww
	    HTProxy_deleteAll();
	    HTNoProxy_deleteAll();
	
	    // regex for what to proxy
	    HTProxy_addRegex("http://www.", "http://192.200.8.20:80", -1);
	
	    // regex for what not to proxy
	    HTNoProxy_addRegex("http://localhost", -1);
	
	    /* Initialize libwww */
	    //HTProfile_newPreemptiveClient("HTTPTest ", "1.1");
		
		char * lData = "2=dataforpostTEST";

		HTAssocList * formfields = HTAssocList_new();
		HTParseFormInput(formfields, lData);

		char * cwd = HTGetCurrentDirectoryURL();
		char * dst_str = "http://192.200.8.252/default.asp?1=Dataforget=hi" ;
		HTAnchor * dst = HTAnchor_findAddress(dst_str);


	
		HTRequest * lrequest  = HTRequest_new(); 
		
	
		HTRequest_setOutputFormat(lrequest, WWW_SOURCE);
	
		HTChunk * chunk = HTPostFormAnchorToChunk(formfields, dst, lrequest);

	
		if (chunk) 
		{
			char * string;
			//Go into the event loop... 
			HTEventList_loop(lrequest);
		
			// print the chunk result 
			string = HTChunk_toCString(chunk);
		
			AfxMessageBox(string);
		
			HT_FREE(string);
		}
		else 
		{
			AfxMessageBox("Type the URL you want to accces on the command line\n");
	      }

		/* Clean up the form fields */
		HTAssocList_delete(formfields);
	

	    HTRequest_delete(lrequest);
	
	    /* Terminate the Library */
	    //HTProfile_delete();
	
	
	    /* Terminate the Library */
		 HTLibTerminate();
		i++ ;
	}
	while(i < 1  ) ; 
	

	double lEndTime = GetTime();
	double lDiff = ( lEndTime - lStartTime ) / 1000;
	char lDiffStr[30] = "\0";
	sprintf( lDiffStr, "%20.3f", lDiff );
	AfxMessageBox(lDiffStr ) ; 


	return 0;
}


void CTestDlg::OnThreadTest() 
{
	UpdateData() ; 

	
	HANDLE lHandle = NULL;
	DWORD  lThreadId = 0;

	HANDLE	hEvent = NULL ;
	hEvent = CreateEvent( NULL, TRUE, FALSE, "StartThreadCheck" );

	int i =  0 ; 
	do 
	{
		lHandle = CreateThread( NULL, 0, ThreadCheck, NULL, 0, &lThreadId );	
		i ++ ; 
	}
	while( i < 1 ) ; 
	
	gIsDone = true ; 
	SetEvent(hEvent) ; 
	
}
Received on Monday, 18 March 2002 02:40:13 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 23 April 2007 18:18:40 GMT