Threads With Libpq Issue - Mailing list pgsql-general

From dinesh kumar
Subject Threads With Libpq Issue
Date
Msg-id CALnrH7op9WjECDc7=iN0mH3SqpaKN=HeUvv+z1QEdyZgHbJw+w@mail.gmail.com
Whole thread Raw
Responses Re: Threads With Libpq Issue  (Craig Ringer <ringerc@ringerc.id.au>)
List pgsql-general
Respected All,

This is my first post in PG-Generals. If it is not the place for these kind of queries, then please guide me where i need to post. 

I have a quick question regarding "pthread" with PostgreSQL 9.0 Libpq. I'm facing a problem with "Pthread" and libpq. Please find the below program behavoiur. 

Connection_To_PG()
{
/* Making a connection to PG 9.0 */
}

void* Independent_Thread1()
{
while(1)
{
sleep(5);
/* Doing 1 Insert Operation on Table A*/
}
}

void* Independent_Thread2()
{
while(1)
{
sleep(5);
/*Doing 1 Insert Operation on Table B*/
}

main()
{
pthread Ind1,Ind2;
Connection_TO_PG();
pthread_create(&Ind1,NULL,&Independent_Thread1,NULL);
pthread_create(&Ind2,NULL,&Independent_Thread2,NULL);
if(pthread_join(Ind1,NULL)<0)
{
printf("Ind1 is completed");
}
if(pthread_join(Ind2,NULL)<0)
{
printf("Ind2 is completed");
}
}


Problem Description:
====================
When i ran the above program, it's running(i.e inserting 2 to 10 records) some time and going to hang state. Some times, it's running more than 15 minutes and some times only 2 to 3 minutes. I enabled the postgresql log level to DEBUG5, and it's also stopped to showing the progress after 2 to 3 minutes span of time. 

Can some advise me, where i'm doing mistake in the above source code.. And would like to know to why it's not functioning properlly .. And i'm also getting the following message when the above libpq program runs..

************* Message **************************
message type 0x31 arrived from server while idle
message type 0x32 arrived from server while idle
message type 0x6e arrived from server while idle
message type 0x43 arrived from server while idle
message type 0x5a arrived from server while idle

However, the below sample thread(i.e without libpq) programg is working fine witout any issues.  

#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>

void* thread1()
{
        while(1){
                printf("Thread1\n");
        }
}

void* thread2()
{
        while(1){
                printf("Thread2\n");
        }
}

int main()
{
        int status;
        pthread_t tid1,tid2;
        pthread_create(&tid1,NULL,&thread1,NULL);
        pthread_create(&tid2,NULL,&thread2,NULL);
        pthread_join(tid1,NULL);
        pthread_join(tid2,NULL);
        return 0;
}


Thanks in advance ... 

Best Regards,
Dinesh

pgsql-general by date:

Previous
From: Merlin Moncure
Date:
Subject: Re: Threads With Libpq
Next
From: dinesh kumar
Date:
Subject: Re: Threads With Libpq