怎么让两个函数轮流执行自身的语句
如何让两个函数轮流执行自身的语句
#include <stdio.h>
//有如下两个函数
//先执行test1,执行到第一条语句"int i;"接着去执行
//test2第一条语句,又返回到test1执行第二条语句,
//依此类推。即是让两个函数轮流执行自身的语句。
//如何实现。谢谢!!
void test1(void){
int i;
for(i=0; i<32768; i++)
printf("i=%d\n",i);
}
void test2(void){
int j;
for(j=0; j<32768; j++)
printf("j=%d\n",j);
}
int main(int argc, char *argv[])
{
test1();
test2();
return 0;
}
------解决方案--------------------
我也想知道...
------解决方案--------------------
void test1(void){
int i;
for(i=0; i <32768; i++)
printf("i=%d\n",i);
test2();
}
void test2(void){
int j;
for(j=0; j <32768; j++)
printf("j=%d\n",j);
test1();
}
int main(int argc, char *argv[])
{
test1();
return 0;
}
------解决方案--------------------
基本没有什么办法做到。在什么情况下需要这么奇怪的需求?如果真要交替,你还不如把两个函数合并在一起呢
------解决方案--------------------
正如1楼所言,单线程无法实现。
另外想请教楼主,
楼主为什么会有这样的需求,
究竟是要满足什么问题?
达到什么效果?
------解决方案--------------------
单线程其实可以用加强版的goto: setjmp和longjmp函数。
就像汇编里的ljmp一样跳来跳去
------解决方案--------------------
楼主可以看一下多线程的资料
这涉及到线程间通信问题
线程间通信的两大关键:同步与互斥
你说的应该就是同步问题了
这个要看你用的是什么操作系统了
比如vxworks,我用的这个
有一个 同步信号量 可以简单的实现线程间的同步配合
但是一般来说
让2个线程轮流执行1条语句意义不大
而且,1条语句的概念太过于模糊
因为1条语句可能表示N条机器指令
------解决方案--------------------
#include <stdio.h>
//有如下两个函数
//先执行test1,执行到第一条语句"int i;"接着去执行
//test2第一条语句,又返回到test1执行第二条语句,
//依此类推。即是让两个函数轮流执行自身的语句。
//如何实现。谢谢!!
void test1(void){
int i;
for(i=0; i<32768; i++)
printf("i=%d\n",i);
}
void test2(void){
int j;
for(j=0; j<32768; j++)
printf("j=%d\n",j);
}
int main(int argc, char *argv[])
{
test1();
test2();
return 0;
}
------解决方案--------------------
我也想知道...
------解决方案--------------------
void test1(void){
int i;
for(i=0; i <32768; i++)
printf("i=%d\n",i);
test2();
}
void test2(void){
int j;
for(j=0; j <32768; j++)
printf("j=%d\n",j);
test1();
}
int main(int argc, char *argv[])
{
test1();
return 0;
}
------解决方案--------------------
基本没有什么办法做到。在什么情况下需要这么奇怪的需求?如果真要交替,你还不如把两个函数合并在一起呢
------解决方案--------------------
正如1楼所言,单线程无法实现。
另外想请教楼主,
楼主为什么会有这样的需求,
究竟是要满足什么问题?
达到什么效果?
------解决方案--------------------
单线程其实可以用加强版的goto: setjmp和longjmp函数。
就像汇编里的ljmp一样跳来跳去
------解决方案--------------------
楼主可以看一下多线程的资料
这涉及到线程间通信问题
线程间通信的两大关键:同步与互斥
你说的应该就是同步问题了
这个要看你用的是什么操作系统了
比如vxworks,我用的这个
有一个 同步信号量 可以简单的实现线程间的同步配合
但是一般来说
让2个线程轮流执行1条语句意义不大
而且,1条语句的概念太过于模糊
因为1条语句可能表示N条机器指令
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <setjmp.h> //有如下两个函数 //先执行test1,执行到第一条语句"int i;"接着去执行 //test2第一条语句,又返回到test1执行第二条语句, //依此类推。即是让两个函数轮流执行自身的语句。 //如何实现。谢谢!! jmp_buf jmpbuf1, jmpbuf2; void test1(void){ int i; for(i=0; i <10; i++) { if (setjmp(jmpbuf1) == 0) { return; } else { printf("i=%d\n", i); longjmp(jmpbuf2, 1); } } } void test2(void){ int j; for(j=0; j <10; j++) { if (setjmp(jmpbuf2) == 0) { longjmp(jmpbuf1, 1); } else { printf("j=%d\n", j); } } } int main(int argc, char *argv[]) { test1(); test2(); return 0; }
------解决方案--------------------
不要随便的说单线程无法做到这,无法做到那,在汇编层都有的sjmp和ljmp,在高级语言一样能够实现。虽然这是我们应该少用甚至不用的。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
在我看来,对于单核机器来说,在CPU层面所有的应用都是单线程的,只是操作系统帮助对我们的进程和线程进行调度。
------解决方案--------------------
单核机器也有多线程的,例如硬盘操作可以不需要CPU一直参与,显卡绘图也是
------解决方案--------------------