我试图运行一个永远不会结束的功能(直到程序被杀)
我如何启动这样的功能并能够继续执行该功能,因为目前程序不会超过永无止境的功能。
此致
保
答案 0 :(得分:10)
你需要开始一个新线程。给定的线程一次只能执行一个函数。因此,如果您希望同时执行两个单独的函数,则需要多个线程。您需要研究多线程编程。如果您使用的是Linux或其他基于unix的系统,那么要查看的库将是pthreads。
答案 1 :(得分:2)
虽然我同意其他所有人认为线程可能是最简单的方法,但这种情况听起来并不像是应该发生的事情(至少不是故意的) - 这听起来像是源于设计问题
为什么你需要一个永远运行的功能吗?这个功能有什么作用?可能有更合适的编程模型,例如Windows服务或守护进程。此外,通常最好向线程发送一个结束时间的信号,并让线程做到这一点,直到收到这样的消息(而不是在应用程序退出时强行杀死它)。
我不太了解你在这里想做什么,但我建议检查你的设计,看看是否有更好的方法。
答案 2 :(得分:1)
在线程中将其关闭。但是,允许函数退出仍然是明智的。
答案 3 :(得分:1)
执行“过去”永无止境的功能是不可能的(如果它没有结束,你就不能超越它)。我假设您希望在后台循环中运行一些代码,而程序会执行其他操作。
你想要这样的东西:
#include <pthread.h>
int endLoop;
void* backgroundLoop(void* arg) {
while (!endLoop) {
...
}
return NULL;
}
int main (int argc, char** argv) {
pthread_t thread;
int retval;
...
// Launch background thread
endLoop = 0;
retval = pthread_create(&thread, NULL, backgroundLoop, NULL);
// Continue with main function
...
// Force background loop to end
endLoop = 1;
}
如果您使用的是pthread,则可以找到更多信息here。如果您正在使用其他一些线程库,概念将类似,但线程创建/销毁功能可能看起来不同。
答案 4 :(得分:-1)
基于类似问题的伪线程的想法我需要修复而不进行线程化(可能适用于您也可能不适用):