关于C语言中的可重入性
如果您有一个库关于C语言中的可重入性,c,reentrancy,C,Reentrancy,如果您有一个库f_func()中的函数,并且您知道它是不可重入的,那么您将如何在线程化环境(POSIX)中使用它?您无法访问库的源代码。您可以将其包装在互斥锁中。下面是一个示例用法: pthread_mutex_t f_func_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&f_func_mutex); f_func(); // if f_func has "side effects", such as setting
f_func()
中的函数,并且您知道它是不可重入的,那么您将如何在线程化环境(POSIX)中使用它?您无法访问库的源代码。您可以将其包装在互斥锁中。下面是一个示例用法:
pthread_mutex_t f_func_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&f_func_mutex);
f_func();
// if f_func has "side effects", such as setting a global, you'll want to grab
// the value within the locked region:
int local = global_set_by_f_func;
pthread_mutex_unlock(&f_func_mutex);
您必须将其建模为共享资源,并将其封装在互斥锁(或类似的互斥锁)中?“共享资源”、“互斥体”等等?你可以像其他人说的那样用互斥体来保护它。。。但如果只有一个线程调用它,则可能不需要这样做。