要在一个线程中判断其他线程是否在运行并安全退出,可以使用以下步骤:

  1. 创建一个标志变量来表示线程是否在运行。可以使用一个全局的布尔类型变量来表示,初始值设置为true。

  2. 在每个线程的run函数中,将标志变量设置为true,表示线程正在运行。

  3. 在需要判断线程是否在运行的地方,使用标志变量来进行判断。如果标志变量为true,则表示线程正在运行。

  4. 在需要安全退出线程的地方,将标志变量设置为false,表示线程需要退出。

  5. 在每个线程的run函数中,使用一个循环来检测标志变量的值。如果标志变量为false,则退出循环,结束线程。

以下是一个示例代码:

#include <iostream>
#include <thread>
#include <atomic>

std::atomic<bool> isRunning(true); // 标志变量,初始值为true

void threadFunction()
{
    while (isRunning)
    {
        // 线程的主要逻辑
    }
    std::cout << "Thread safely exited!" << std::endl;
}

int main()
{
    std::thread t(threadFunction); // 创建一个线程

    // 判断线程是否在运行
    if (isRunning)
    {
        std::cout << "Thread is running!" << std::endl;
    }

    // 安全退出线程
    isRunning = false;

    // 等待线程结束
    t.join();

    return 0;
}

在上面的示例代码中,线程函数threadFunction中使用一个循环来检测标志变量isRunning的值。当isRunning为false时,退出循环,线程安全退出。在主函数中,我们判断isRunning的值来判断线程是否在运行,并通过将isRunning设置为false来安全退出线程


原文地址: https://www.cveoy.top/t/topic/iVrO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录