当前位置: 技术问答>linux和unix
函数调用问题 --- 大虾们请一定进来看看!!!!!!!!!!
来源: 互联网 发布时间:2015-07-15
本文导语: 各位: 现在假设有A、B和C三个函数,A调用B而B又调用C,并且该三个函数都没有返回值(即为void类型)。A函数被一个线程tmpThread所调用,如下: void tmpThread(){ ... ...//前期初始化 ...
各位:
现在假设有A、B和C三个函数,A调用B而B又调用C,并且该三个函数都没有返回值(即为void类型)。A函数被一个线程tmpThread所调用,如下:
void tmpThread(){
... ...//前期初始化
while( 1 ){
A();//调用A函数
}
... ...//后期处理
}
现假设B和C函数的执行时间很长,那么在线程的死循环中,有没有可能在B或C没有返回以前就又一次地进入了A函数,从而使B或C在CPU上同时执行?
这就是网络数据包的处理框架,如上问题,是等到上一个数据包处理完后再处理下一个,还是能够做到来了数据包就马上处理(数据包的处理只有一个线程,其中又调用了其他的处理函数,如上代码所示)?
请各位一定参加讨论,并请做出解释,这个问题一直困扰了在下很久!
不胜感激!!!
现在假设有A、B和C三个函数,A调用B而B又调用C,并且该三个函数都没有返回值(即为void类型)。A函数被一个线程tmpThread所调用,如下:
void tmpThread(){
... ...//前期初始化
while( 1 ){
A();//调用A函数
}
... ...//后期处理
}
现假设B和C函数的执行时间很长,那么在线程的死循环中,有没有可能在B或C没有返回以前就又一次地进入了A函数,从而使B或C在CPU上同时执行?
这就是网络数据包的处理框架,如上问题,是等到上一个数据包处理完后再处理下一个,还是能够做到来了数据包就马上处理(数据包的处理只有一个线程,其中又调用了其他的处理函数,如上代码所示)?
请各位一定参加讨论,并请做出解释,这个问题一直困扰了在下很久!
不胜感激!!!
|
不可能,同一个线程执行的先后顺序是确定的。
|
除了将你的结构改为多线程,我想是不可能达到你的要求的!