Если потоки синхронизированы с мьютексами/прямыми замками Pthread, можно легко обернуть вызовы на pthread_mutex_lock()
и pthread_mutex_unlock()
, например, используя LD_PRELOAD
. Это может быть очень полезно для протоколирования/отладки.Могу ли я обернуть атомные встроенные модули gcc?
Возможно ли сделать что-то подобное с атомными встроенными модулями gcc, например __sync_fetch_and_add
?
Я думаю, что я не смогу нам LD_PRELOAD
, но, возможно, существует какой-либо другой механизм.
Внутренние функции непосредственно превращаются в машинные инструкции. Они не вызовы библиотеки. –
Да, я знаю об этом. Но, возможно, gcc предоставляет некоторые флаговые компиляции или другие средства для переноса таких функций. – danyhow
Обратите внимание, что встроенные функции '__sync' являются« устаревшими ». Рассмотрим более поздние ['__atomic'] (http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html#g_t_005f_005fatomic-Builtins) встроенные функции. –