温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在Linux C++中正确终止线程

发布时间:2024-11-15 17:55:59 来源:亿速云 阅读:97 作者:小樊 栏目:编程语言

在 Linux 中,使用 C++11 标准库中的 <thread> 可以轻松地创建和管理线程

#include <iostream>
#include <thread>
#include <atomic>
#include <csignal>
#include <unistd.h>

std::atomic<bool> stop_thread(false);

void thread_function() {
    while (!stop_thread) {
        // 在此处执行你的线程任务
        std::cout << "线程正在运行..." << std::endl;
        sleep(1); // 暂停一秒钟
    }
}

void signal_handler(int sig) {
    if (sig == SIGINT || sig == SIGTERM) {
        stop_thread = true;
    }
}

int main() {
    // 注册信号处理器
    std::signal(SIGINT, signal_handler);
    std::signal(SIGTERM, signal_handler);

    // 创建线程
    std::thread t(thread_function);

    // 等待线程完成(此处为阻塞主线程)
    t.join();

    std::cout << "线程已终止" << std::endl;

    return 0;
}

在这个示例中,我们创建了一个名为 stop_thread 的原子布尔变量,用于在线程中设置停止标志。我们还定义了一个信号处理器 signal_handler,用于捕获 SIGINTSIGTERM 信号(通常分别由 Ctrl+C 和 kill 命令发送)。当接收到这些信号时,我们将 stop_thread 设置为 true,从而使线程在下一次循环迭代时终止。

请注意,这个示例仅用于演示目的。在实际应用中,你可能需要根据你的需求对代码进行调整。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI