Mam zagwostkę od kliku dni. Chodzi o to, że chce sobie przanalizować połączenie do bazy danych za pomoca bilbioteki PQXX, a nastepnie identyfikator polączenia przekazać do wątku który bedzie mogł również robić wpisy do bazy bez ponownego łączenia. Mam zatem jedna z funkcji która jest odpalona w wątku a wyglada ona tak:
void *updateServerStatus(void * p)
{
while(true) {
//work u(c);
//result k = w.exec(" UPDATE tabA SET last = NOW() WHERE name = 'test' ");
//u.commit();
sleep(2);
}
}
Powyzej watek powinien co 2 sekundy robic update z data i czasem
W glownym watku realizuje dla przykladu dwie rzeczy. Pierwsze lacze sie z baza i cos w niej zmieniam,
a druga rzecz to uruchamiam watek:
int main( void ) {
pthread_t threadUpdateServerStatus;
connection c("dbname=baza user=postgres password=password hostaddr=127.0.0.1 port=5444");
//musze sprawdzic czy nawiazano polaczenie
pthread_create( &threadUpdateServerStatus, NULL, &updateServerStatus, &c);
work w(c);
result r = w.exec("INSERT INTO tableB(timedate) VALUES(now())");
w.commit();
return 0;
}
Teraz ten kod z insertem do bazy dziala bez problemu. Chcialem tylko sprawdzic czy jesli jest polaczenie z baza to odpale watek i w odpaleniu na koncu przekazuje parametr "&c"
pthread_create( &threadUpdateServerStatus, NULL, &updateServerStatus, &c);
ALe nie wiem czy tak to powinno wygladac.
I jak ten parametr odebrac w funkcji z watku ?
Czy moze poszukac jakiejs klasy konkretnej do bazy ?
Co tu najlepiej zrobic?