本人些了一个小的程序,在unix下面用的多线程,其中一个线程,函数如下:
void* child3(void* arg)
{
printf("pthread----------------------3\n");
memset(TT,0,MAX_MSG);
sprintf(TT,"select ser_ip,ser_port,file_name_1,file_name_2,start_time,end_time,state_bit from streaminfo where series_num ='%08x%08x'",*(int*)recvdata->packInfo.id.series_num, *(int*)(recvdata->packInfo.id.series_num+4));
if (mysql_query(&mysql_conn,TT) == 0)
printf("select from the database2 succeed.\n");
else
for(;;)
{
printf("select from the database2 failured!!!!!!!!!!!!!!!!!!!!!\n");
printf("trying to connect database2........\n");
//mysql_init(&mysql_conn);
//mysql_real_connect(&mysql_conn,"localhost","root","mitsubishi","test_db_1",MYSQL_PORT,NULL,0);
//sleep(1);
printf("sleep ended---------------\n");
if( mysql_query(&mysql_conn,TT) == 0 )
{
printf("the function is execled.\n");
break;
}
else
{
printf("try execute the function again.\n");
continue;
}
} mysql_result = mysql_store_result(&mysql_conn);
mysql_row = mysql_fetch_row(mysql_result);
tim1 = atoi(mysql_row[4]);
tim2 = atoi(mysql_row[5]);
printf("tim2 = %d\n",tim2);
tim = time(NULL);
if ((tim >= tim1) && (tim < tim2) && (atoi(mysql_row[6]) == 0))
{
ss_2.server_ip = htonl(inet_addr(mysql_row[0]));
ss_2.server_port = (unsigned int)atoi(mysql_row[1]);
memcpy(ss_2.file_name_1,mysql_row[2],sizeof(ss_2.file_name_1));
.....
}
其中的mysql_query(&mysql_conn,TT);函数,运行一段时间以后,总 是不能正常运行(返回值!=0),由于是应用程序,本人希望能 再运行一下mysql_query(&mysql_conn,TT)这个函数,可是,却不能运行,情 高手指点下,这是怎么回事
void* child3(void* arg)
{
printf("pthread----------------------3\n");
memset(TT,0,MAX_MSG);
sprintf(TT,"select ser_ip,ser_port,file_name_1,file_name_2,start_time,end_time,state_bit from streaminfo where series_num ='%08x%08x'",*(int*)recvdata->packInfo.id.series_num, *(int*)(recvdata->packInfo.id.series_num+4));
if (mysql_query(&mysql_conn,TT) == 0)
printf("select from the database2 succeed.\n");
else
for(;;)
{
printf("select from the database2 failured!!!!!!!!!!!!!!!!!!!!!\n");
printf("trying to connect database2........\n");
//mysql_init(&mysql_conn);
//mysql_real_connect(&mysql_conn,"localhost","root","mitsubishi","test_db_1",MYSQL_PORT,NULL,0);
//sleep(1);
printf("sleep ended---------------\n");
if( mysql_query(&mysql_conn,TT) == 0 )
{
printf("the function is execled.\n");
break;
}
else
{
printf("try execute the function again.\n");
continue;
}
} mysql_result = mysql_store_result(&mysql_conn);
mysql_row = mysql_fetch_row(mysql_result);
tim1 = atoi(mysql_row[4]);
tim2 = atoi(mysql_row[5]);
printf("tim2 = %d\n",tim2);
tim = time(NULL);
if ((tim >= tim1) && (tim < tim2) && (atoi(mysql_row[6]) == 0))
{
ss_2.server_ip = htonl(inet_addr(mysql_row[0]));
ss_2.server_port = (unsigned int)atoi(mysql_row[1]);
memcpy(ss_2.file_name_1,mysql_row[2],sizeof(ss_2.file_name_1));
.....
}
其中的mysql_query(&mysql_conn,TT);函数,运行一段时间以后,总 是不能正常运行(返回值!=0),由于是应用程序,本人希望能 再运行一下mysql_query(&mysql_conn,TT)这个函数,可是,却不能运行,情 高手指点下,这是怎么回事
{
printf("pthread----------------------3\n");
memset(TT,0,MAX_MSG);
sprintf(TT,"select ser_ip,ser_port,file_name_1,file_name_2,start_time,end_time,state_bit from streaminfo where series_num ='%08x%08x'",*(int*)recvdata->packInfo.id.series_num, *(int*)(recvdata->packInfo.id.series_num+4));
****** if (mysql_query(&mysql_conn,TT) == 0)//就是这里,有的时候运行起来,返回值不是0,为了程序能正常运行,所以,我在下面些了 else里面的 程序,希望可以解决,谁知道,到下面都 运行不起来这个函数了,情指点下
printf("select from the database2 succeed.\n");
else
for(;;)
{
printf("select from the database2 failured!!!!!!!!!!!!!!!!!!!!!\n");
printf("trying to connect database2........\n");
//mysql_init(&mysql_conn);
//mysql_real_connect(&mysql_conn,"localhost","root","mitsubishi","test_db_1",MYSQL_PORT,NULL,0);
//sleep(1);
printf("sleep ended---------------\n");
if( mysql_query(&mysql_conn,TT) == 0 )
{
printf("the function is execled.\n");
break;
}
else
{
printf("try execute the function again.\n");
continue;
}
}