#include #include #include #include #include #include #define NUM_THREADS 32 int keepRunning = 1; void query(mongo *conn) { bson query[1]; mongo_cursor cursor[1]; bson_init( query ); bson_append_string(query, "_id", "user0" ); bson_finish( query ); mongo_cursor_init( cursor, conn, "test.usertable" ); mongo_cursor_set_query( cursor, query ); while( mongo_cursor_next( cursor ) == MONGO_OK ) { bson_iterator iterator[1]; //bson_print( &cursor->current) ; if ( bson_find( iterator, mongo_cursor_bson( cursor ), "_id" )) { //printf( "name: %s\n", bson_iterator_string( iterator ) ); } } bson_destroy( query ); mongo_cursor_destroy( cursor ); } void* thread_main(void *pParam) { mongo conn; //printf("enter thread\n"); if( mongo_connect( &conn, "10.23.0.243", 27017 ) != MONGO_OK ) { switch( conn.err ) { case MONGO_CONN_NO_SOCKET: printf( "FAIL: Could not create a socket!\n" ); break; case MONGO_CONN_FAIL: printf( "FAIL: Could not connect to mongod. Make sure it's listening at 127.0.0.1:27017.\n" ); break; } exit( 1 ); } while(keepRunning) query(&conn); mongo_destroy( &conn ); printf("exit thread\n"); } int main() { int i; pthread_t thread[NUM_THREADS]; pthread_attr_t attr[NUM_THREADS]; for(i = 0; i < NUM_THREADS; i++) { pthread_attr_init(&attr[i]); pthread_create( &thread[i], &attr[i], thread_main, NULL); } sleep(180); keepRunning = 0; for(i = 0; i < NUM_THREADS; i++) pthread_join(thread[i],NULL); return 0; }