我想使用多线程来加快顺序C程序的处理速度。我的问题是我的C程序有很多全局变量。它们由我的C程序中的函数读取和写入。因此,由于与运行顺控程序相比,它不再拥有确切的结果,因此无法通过多线程将功能并行化。
我使用OpenMP处理我的C程序。但是,我想在使用OpenMP之前重构我的C程序以达到上述目的
这是我的示例:
int a = 5 ; // global variable
funcA () {
int b;
b = a + 5; // read a
}
funcB () {
printf("%d\n", a);
}
我不想找到并行完成funcA
和funcB
的方法,但是我想减少由依赖引起的全局变量(如上例中的变量a
)。
答案 0 :(得分:1)
没有简单的方法可以完成复杂的事情。有时即使从零开始编码,也可能难以设计没有全局变量的代码。对于您的情况,这个问题要困难得多。
关于如何减少全局变量的数量,没有(也不能是)通用解决方案。
唯一可以做的是:
当然,处理某些全局变量可能比处理其他全局变量容易。您可能要从前者开始。看到成功如愿以偿,将有助于您在执行任务期间的士气。
如果您了解如何编写代码,可能会有所帮助:
Google可以在此方面为您提供极大的帮助。
答案 1 :(得分:1)
通常,删除全局变量并非易事。
您需要逐案处理。
您真正需要做的是尝试将所需的变量作为函数参数传递,而不是将它们作为全局变量。
在给出的这个示例中,我不给出任何解决方案,而无需查看函数funcA
和funcB
的调用方式。您应该尝试将变量a
作为参数传递给两个函数。您可能需要备份一些功能,直到获得最终调用这两个功能的通用功能。