- From: WangHD <richard@sunjapan.com.cn>
- Date: Fri, 4 Oct 2002 14:15:00 +0800
- To: <www-lib@w3.org>
- Message-ID: <016001c26b6d$5eb8eca0$3f0410ac@sunjapan.com.cn>
hello
can anyone help me about following problem?
my OS is SunOS 5.6. I want to make a function(named FuncA) by which I can
send request to a web site and get response from that site.
If the time speicified by main program(as a parameter of FuncA) is over, the
function should return a overtime error.
it looked like following
main program -> FuncA -> web site -> FuncA -> main program
I use libwww to do that job in FuncA,it did work in non-multithread
environment,but if the main program is one thread of a process , the FuncA
failed.
I checked the libwww document, but found no answer.
follwing is my test program , in which the postSDBService function is what I
called FuncA before.
#include "postSDBService.h"
#include <pthread.h>
PRIVATE void* test(void* arg)
{
int nRet;
char *szBuf = NULL;
unsigned int nBufSize = 0;
char szErrorMessage[SDB_MSGSIZE+1];
HTAssocList* paramList = getParamsList();
printf("!!!!!!!!!!!!!!!!!!!");
memset((char*)szErrorMessage, 0, sizeof(szErrorMessage));
setInParam(paramList, "MEBR_NO", "zhxj100000");
setInParam(paramList, "LOG_OUTPUT_PARAM", "0");
nRet = postSDBService( "192.168.3.61",
8089,
"KissService_10",
"ComRefAMCMember",
"KISS",
"3",
"XML",
"MngCustomer_ComRefAMCMember",
paramList,
4000,
&szBuf,
&nBufSize,
(char*)&szErrorMessage);
if (nRet == 0){
printf("Success:\n%d\n%s\n", nBufSize, szBuf);
}else{
printf("[%d]Failure:\n%s\n", nRet, szErrorMessage);
}
deleteParamsList(paramList);
free(szBuf);
return;
}
PRIVATE void* test1(void* arg)
{
int nRet;
char *szBuf = NULL;
unsigned int nBufSize = 0;
char szErrorMessage[SDB_MSGSIZE+1];
HTAssocList* paramList = getParamsList();
printf("!!!!!!!!!!!!!!!!!!!");
memset((char*)szErrorMessage, 0, sizeof(szErrorMessage));
setInParam(paramList, "MEBR_NO", "1234567890");
setInParam(paramList, "LOG_OUTPUT_PARAM", "0");
nRet = postSDBService( "192.168.3.61",
8089,
"KissService_5",
"MypRefAddress",
"MyPage",
"3",
"XML",
"RefMember_MypRefAddress",
paramList,
20000,
&szBuf,
&nBufSize,
(char*)&szErrorMessage);
if (nRet == 0){
printf("Success:\n%d\n%s\n", nBufSize, szBuf);
}else{
printf("[%d]Failure:\n%s\n", nRet, szErrorMessage);
}
deleteParamsList(paramList);
free(szBuf);
return;
}
PRIVATE void* test2(void* arg)
{
printf("test test test \n");
}
int main(int argc, char* argv[])
{
pthread_t tid[20];
pthread_attr_t attr[20];
int i;
void * arg;
void ** status;
for (i = 0; i < 3; i++) {
pthread_attr_init(&attr[i]);
pthread_attr_setstacksize(&attr[i], 2097152);
pthread_create(&tid[i], &attr[i], test, arg);
printf("thread %d\n", tid[i]);
}
for (i= 3; i < 6; i++) {
pthread_attr_init(&attr[i]);
pthread_attr_setstacksize(&attr[i], 2097152);
pthread_create(&tid[i], &attr[i], test1, arg);
printf("thread %d\n", tid[i]);
}
for (i = 0; i < 6; i++) {
pthread_join(tid[i], status);
}
return 0;
}
Received on Friday, 4 October 2002 02:15:43 UTC