Я хочу определить, можно ли вызывать определенную функцию в C из нескольких потоков одновременно, чтобы понять, нужно ли мне защищать ее мьютексами.Файл, в котором реализована и определена функция, не имеет механизма мьютекса, поэтому есть вероятность, что только один поток когда-либо получит доступ к функции, но есть вероятность, что несколько потоков сделают это.
Я думал добавить переменную локального хранилища потока, которую я увеличиваю при запуске функции и уменьшаю при выходе из функции.Если после уменьшения значение переменной больше 0, то функция получает доступ к нескольким потокам.
Это мой код:
#include <stdio.h>
static __thread int threadCounter = 0;
void f(void)
{
threadCounter++;
// do something
threadCounter--;
printf("threadCounter: %d\n", threadCounter);
}
Мне интересно, если это решениедостаточно, чтобы определить, имеют ли несколько потоков доступ к функции, и есть ли лучшие способы сделать это.