Provided by: libmongoc-doc_1.3.1-1_all bug

NAME

       mongoc_client_pool_t - Connection pooling abstraction

SYNOPSIS

       typedef struct _mongoc_client_pool_t mongoc_client_pool_t

       mongoc_client_pool_t  is  the  basis  for  multi‐threading  in the MongoDB C driver. Since
       mongoc_client_t structures are not thread‐safe, this structure is used to retrieve  a  new
       mongoc_client_t for a given thread. This structure is thread‐safe \&.

EXAMPLE

       #include <mongoc.h>

       static void *
       worker (void *data)
       {
          mongoc_client_pool_t *pool = data;
          mongoc_client_t *client;

          do {
             client = mongoc_client_pool_pop (pool);
             /*
              * Do something with client. If you are writing an HTTP server, you
              * probably only want to hold onto the client for the portion of the
              * request performing database queries.
              */
             mongoc_client_pool_push (pool, client);
          } while (!inShutdown);

          return NULL;
       }

       int main (int argc, char *argv[])
       {
          mongoc_client_pool_t *pool;
          mongoc_uri_t *uri;
          pthread_t thread[10];
          unsigned i;
          void *ret;

          mongoc_init ();

          uri = mongoc_uri_new ("mongodb://mdb1.example.com/?minPoolSize=16");
          pool = mongoc_client_pool_new (uri);

          for (i = 0; i < 10; i++) {
             pthread_create (&thread, NULL, worker, pool);
          }

          mongoc_uri_destroy (uri);

          for (i = 0; i < 10; i++) {
             pthread_join (threads [i], &ret);
          }

          mongoc_cleanup ();

          return 0;
       }

COLOPHON

       This    page   is   part   of   MongoDB   C   Driver.    Please   report   any   bugs   at
       https://jira.mongodb.org/browse/CDRIVER.