diff options
Diffstat (limited to 'src/fluent-bit/lib/lwrb/docs/examples_src/example_thread_safety.c')
-rw-r--r-- | src/fluent-bit/lib/lwrb/docs/examples_src/example_thread_safety.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/fluent-bit/lib/lwrb/docs/examples_src/example_thread_safety.c b/src/fluent-bit/lib/lwrb/docs/examples_src/example_thread_safety.c new file mode 100644 index 000000000..5ffdee291 --- /dev/null +++ b/src/fluent-bit/lib/lwrb/docs/examples_src/example_thread_safety.c @@ -0,0 +1,47 @@ +/* Declare variables */ +lwrb_t rb; + +/* 2 mutexes, one for write operations, + one for read operations */ +mutex_t m_w, m_r; + +/* 4 threads below, 2 for write, 2 for read */ +void +thread_write_1(void* arg) { + /* Use write mutex */ + while (1) { + mutex_get(&m_w); + lwrb_write(&rb, ...); + mutex_give(&m_w); + } +} + +void +thread_write_2(void* arg) { + /* Use write mutex */ + while (1) { + mutex_get(&m_w); + lwrb_write(&rb, ...); + mutex_give(&m_w); + } +} + +void +thread_read_1(void* arg) { + /* Use read mutex */ + while (1) { + mutex_get(&m_r); + lwrb_read(&rb, ...); + mutex_give(&m_r); + } +} + +void +thread_read_2(void* arg) { + /* Use read mutex */ + while (1) { + mutex_get(&m_r); + lwrb_read(&rb, ...); + mutex_give(&m_r); + } +}
\ No newline at end of file |