c - 如何制作函数的多个副本并在C中异步调用它
问题描述
假设我们有一个函数指针
int (*functionPtr)(int);
functionPtr = &doSomething;
假设我不断收到一个整数流:58,63,85,1000,8555,-9,-10 ......该流以高速进入并且可以将整个整数范围从 INT_MIN 扩展到 INT_MAX。
如果我像这样一个接一个地调用它,事情就会变得非常非常缓慢:
int result = (*functionPtr)(intvar)
相反,当然,在代码内部,我想做的是能够制作 functionPtr 指向的函数的 N 个副本,并将指向这 N 个副本的指针保存在一个数组中。
然后我想使用这样的调用格式同时和异步调用这些副本:
(*functionPointer[N])(intvar) //Syntax might be little off, but you get the idea.
C中是否有任何方法或纪律来实现这一目标?
解决方案
没有函数副本这样的东西。如果你想在多个线程中运行相同的函数,那么就这样做。对函数的每次调用都会有它自己的参数副本,以及它自己的执行堆栈(意味着它自己的局部变量)。