gpt4 book ai didi

c++ - 如何判断函数是否可重入

转载 作者:IT王子 更新时间:2023-10-29 00:15:05 26 4
gpt4 key购买 nike

我正在尝试使用开源库中的函数。这个函数默认不暴露在外面(所以我假设它不是开源库直接提供的实用函数),但我需要这个函数来解决我代码中的一些问题,所以我在 makefile 中做了一些更改以暴露来自图书馆的功能。

现在的问题是如何确保这个函数是可重入的。

我肉眼是查不到的,因为它在内部调用了很多函数。

准确地说,我很想知道 GDB 中是否有任何可用的工具或任何选项来检查我的函数是否仅使用局部变量而不更改全局变量。

最佳答案

判断一个函数是否可重入的方法是分析它做了什么。

1) 它不访问全局变量,除非对这些全局变量的操作是原子的(例如,没有办法同时读取和修改全局变量)。这通常意味着避免使用全局变量,或保证对它们的同步访问——例如所有修改和读取全局的代码在完成之前都持有一个互斥量,因此操作是序列化的。或者代码th

2) 代码不是自修改的(幸运的是,自修改代码在标准 C 或 C++ 中比较少见)。

3) 它不会调用非可重入函数(包括标准库中的相当数量的函数)或程序(例如,多处理通常会使确保可重入所需的控制复杂化)的其他函数。

我不知道有任何特定工具可以分析函数以确定可重入性。通常一个函数被设计为可重入(或不可重入)。在实践中,如果没有文档说明某个函数被设计为可重入,则可以肯定它不是可重入的。

关于c++ - 如何判断函数是否可重入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29824497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com