blob: 1af182cb1d499196a67b382a74a15afeb441d37c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/*! @page threads Multithreading
All WT_CONNECTION methods are thread safe, and WT_CONNECTION handles can
be shared between threads. Applications typically open a single
connection to each database, per process.
WT_SESSION and WT_CURSOR methods are not thread safe and WT_SESSION and
WT_CURSOR handles cannot be accessed concurrently by multiple threads.
Applications typically open one WT_SESSION handle for each thread
accessing a database, and then one or more WT_CURSOR handles within the
session.
WT_SESSION and WT_CURSOR methods may be accessed by different threads
serially (for example, a pool of threads managed by the application with
a set of shared session or cursor handles). There is no thread-local
state in WiredTiger, and no built-in synchronization of session or
cursor handles, either, so if multiple threads access a session or
cursor handle, access must be serialized by the application.
@section threads_example Code samples
The code below is taken from the complete example program
@ex_ref{ex_thread.c}.
This is an example of a thread entry point. A new session is opened for
the thread and used for all operations within that thread.
@snippet ex_thread.c thread scan
Here is the main function that starts the threads. It opens a single
connection, shared between the threads, and closes the connection after
waiting for all of the threads to exit.
@snippet ex_thread.c thread main
*/
|