...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <stdatomic.h> /* * Sets index to point to index of maximum element in array * and value to contain maximum array value. */ void find_max_element(atomic_int array[], size_t *index, int *value); static size_t index; static int value; static atomic_int array[]; void func(void) { size_t index; int value; find_max_element(array, &index, &value); /* ... */ if (!atomic_compare_exchange_strong(array[index], value, 0)) { /* Handle error */ } } |
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <stdatomic.h> #include <threads.h> static atomic_int array[]; static size_t index; static int value; static mtx_t array_mutex; void func(void) { size_t index; int value; if (thrd_success != mtx_lock(&array_mutex)) { /* Handle error */ } find_max_element(array, &index, &value); /* ... */ if (!atomic_compare_exchange_strong(array[index], value, 0)) { /* Handle error */ } if (thrd_success != mtx_unlock(&array_mutex)) { /* Handle error */ } } |
...