我在 Linux 下用 C++ 编写了一个程序。对于线程,我使用的是 pthread。在程序中,我启动线程并且该线程一直在运行,直到我调用该函数,这应该停止它。在这里你可以看到我的代码。
bool isRunning = false;
pthread_t thread;
void startThread() {
isRunning = true;
int thread_return = pthread_create(&thread, NULL, runThread, NULL);
}
bool stopThread() {
isRunning = false;
// wait until the thread will be finished
return true;
}
void* runThread(void* ptr) {
while(isRunning) {
// do smth.
}
pthread_exit(NULL);
}
当线程启动时,它会做某事。直到isRunning
will的值false
和主程序本身将做其他事情。问题是,当我调用函数时stopThread
,这个函数只是设置isRunning
为 false,而不是等到线程在 while 循环内完成它的任务。我的问题是,我怎么能说 function stopThread
,它应该等待线程退出。
我设置为pthread_join
. _ 但有时它会导致问题,即程序无限等待。因为线程完成的速度比程序来等待线程快。因为线程可以在while循环内的不同部分。所以我永远不知道线程需要退出多少。stopThread
isRunning
false
谢谢