1#include <glib.h>
2
3#define ITERATIONS 100000000
4
5static void
6test_bitlocks (void)
7{
8 guint64 start = g_get_monotonic_time ();
9 gint lock = 0;
10 gint i;
11
12 for (i = 0; i < ITERATIONS; i++)
13 {
14 g_bit_lock (address: &lock, lock_bit: 0);
15 g_bit_unlock (address: &lock, lock_bit: 0);
16 }
17
18 {
19 gdouble elapsed;
20 gdouble rate;
21
22 elapsed = g_get_monotonic_time () - start;
23 elapsed /= 1000000;
24 rate = ITERATIONS / elapsed;
25
26 g_test_maximized_result (maximized_quantity: rate, format: "iterations per second");
27 }
28}
29
30int
31main (int argc, char **argv)
32{
33 g_test_init (argc: &argc, argv: &argv, NULL);
34
35 if (g_test_perf ())
36 g_test_add_func (testpath: "/bitlock/performance/uncontended", test_func: test_bitlocks);
37
38 return g_test_run ();
39}
40

source code of gtk/subprojects/glib/glib/tests/bitlock.c