程序遇到了问题是不是应该重启解决?(首先这是一个待思考的问题)
那么假设我现在重启确实能解决一些问题,要怎么实现呢?
实现代码
#include<thread>
void restart_myself(int num)
{
std::cout<<"Restart"<<std::endl;
system("./calloutsystem");
}
void main()
{
std::thread t1(restart_myself,1);
sleep(1);
exit(0);
return;
}
以上这么一点小程序的玄机就在这个多线程当中,一开始的时候我将system命令放在了main里,然后在这句话后面接上exit(0),结果这个程序就像八卦一样一生二二生四四生万物。
把system直接放在主函数当中的问题是它会阻塞线程,相当于程序进行到这里就进行不下去了,只会开一个新的程序而不会把原来这个程序关掉。
重启条件
1.我们要知道很多问题都是重启不能解决的,而且重启同样会带来很多其他的问题(状态量的丢失/程程序的停止/通讯的交互),所以重启要解决的是只有重启才能解决的问题。
2.重启条件需要较为严苛,而且与启动之后再判断是否正常运行不能存在冲突(重启之后通讯会有一个接入与断开的过程,有可能一个程序的重启导致了通讯的断开,又导致了另一个程序的重启,这样会形成硬件死锁)。
参考网站
刚刚给大家展示的这个方法非常的不规范,C++有很多其他实现的方法,如果有兴趣的同学可以参考一下下面的网站。
C++实现https://blog.csdn.net/kevinshq/article/details/8666848
QT实现https://blog.csdn.net/liukang325/article/details/78625062
网友评论