函数的多线程调用——可重入函数和不可重入函数。

可重入函数:函数可多线程同时调用,一般是在只有局部变量的函数中

不可重入函数:函数一般情况下不可多线程同时调用,这样的函数中一般有全局、静态变量,而这样就涉及到了变量的保护问题,所以需要加入互斥锁/信号量/中断。

可重入函数:

void swap_temp(int* p int* q)
{
    int temp;
    temp = *p;
    *p = *q;
    *q = temp;
}

不可重入函数:

int g_temp;
void swap_temp(int* p, int*q)
{
    pthread_mutex_lock(&lock);
    g_temp = *p;
    *p = *q;
    *q = g_temp;
    pthread_mutex_unlock(&lock);
}
懒惰不会让你一下子跌到 但会在不知不觉中减少你的收获; 勤奋也不会让你一夜成功 但会在不知不觉中积累你的成果 越努力,越幸运。
原文地址:https://www.cnblogs.com/Rainingday/p/14366771.html