不可重入函数:函数一般情况下不可多线程同时调用,这样的函数中一般有全局、静态变量,而这样就涉及到了变量的保护问题,所以需要加入互斥锁/信号量/中断。 可重入函数: voidswap_temp(int* pint*q) {inttemp; temp= *p;*p = *q;*q =temp; } 不可重入函数: intg_temp;voidswap_temp(int* p,int*q) {...
基本上下面的函数是不可重入的 1 2 3 (1)函数体内使用了静态的数据结构; (2)函数体内调用了malloc()或者free()函数; (3)函数体内调用了标准I/O函数。 把一个不可重入函数变成可重入的唯一方法是...
可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入 OS 调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函...
对于可重入函数,以下表述不正确的是:( ) A. 一个可重入的函数在执行中并不使用静态数据,也不返回指向静态数据的指针 B. 所有使用到的数据都由函数的调用者提供
结果1 题目 可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用局部变量,即变量保存在CPU寄存器中或堆栈中。( ) 相关知识点: 试题来源: 解析 正确 反馈 收藏 ...
QObject.可以用于多线程,可以发送信号调用存在于其他线程的slot函数,也可以postevent给其他线程中的对象。之所以可以这样做,是因为每个线程都有自己的事件循环。 在进行下面的讲解之前,应该了解的重要的一点是:QThread对象所在的线程,和QThread创建的线程,也就是run()函数执行的线程不是同一个线程。QThread对象所在的...
满足下列条件的函数多数是不可重入的: 函数体内使用了静态(static)的数据结构; 函数体内调用了 malloc() 或者 free() 函数; 函数体内调用了标准 I/O 函数; A. 可重入函数 B. 不可重入函数1 C. 不可重入函数2 3 为什么中断处理函数不能直接调用不可重入函数?
函数体内调用了标准 I/O 函数; A. 可重入函数void strcpy(char *lpszDest, char *lpszSrc) { while(*lpszDest++=*lpszSrc++);///< 使用的局部变量 *dest=0; } B. 不可重入函数1char cTemp; ///< 全局变量 void SwapChar1(char *lpcX, char *lpcY) ...