legongju.com
我们一直在努力
2025-01-15 06:34 | 星期三

如何在C++线程类中实现定时任务

在 C++ 中,可以使用 库来实现线程类中的定时任务

#include
#include
#include
#include 
#include

class TimerThread {
public:
    TimerThread(int interval) : interval_(interval), stop_signal_(false) {}

    void start() {
        thread_ = std::thread(&TimerThread::execute, this);
    }

    void stop() {
        std::unique_lock lock(mutex_);
        stop_signal_ = true;
        cv_.notify_one();
        lock.unlock();
        if (thread_.joinable()) {
            thread_.join();
        }
    }

private:
    int interval_;
    bool stop_signal_;
    std::thread thread_;
    std::mutex mutex_;
    std::condition_variable cv_;

    void execute() {
        while (true) {
            std::unique_lock lock(mutex_);
            cv_.wait_for(lock, std::chrono::seconds(interval_), [this] { return stop_signal_; });
            if (stop_signal_) {
                break;
            }
            lock.unlock();
            task(); // 执行定时任务
        }
    }

    void task() {
        // 在这里编写需要定时执行的任务
        std::cout << "Task executed!"<< std::endl;
    }
};

int main() {
    TimerThread timer(5); // 设置定时任务间隔为 5 秒
    timer.start();

    std::this_thread::sleep_for(std::chrono::seconds(20)); // 让主线程休眠 20 秒

    timer.stop();

    return 0;
}

在这个示例中,我们创建了一个名为 TimerThread 的类,它接受一个表示定时任务间隔的参数。start() 方法用于启动线程,而 stop() 方法用于停止线程。execute() 方法是线程的主体,它使用条件变量等待指定的时间间隔,然后执行定时任务。

请注意,这个示例仅用于演示目的。在实际项目中,您可能需要根据需求对其进行修改和优化。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/106051.html

相关推荐

  • C++中token是什么

    C++中token是什么

    在C++中,token是源代码中的最小单元,它可以是关键字、标识符、运算符、常量等。在编译过程中,编译器会将源代码分割成一个个token,并对其进行词法分析和语法分...

  • C++ token与程序设计

    C++ token与程序设计

    在C++中,token是指构成程序的基本单位,可以分为关键字、标识符、运算符、分隔符和常量等。程序设计中,我们可以通过合理使用这些token来编写程序,实现所需的功...

  • C++中如何处理token错误

    C++中如何处理token错误

    处理token错误的方法就是在编译过程中发现错误的token,编译器会输出错误信息并停止编译。开发人员需要根据错误信息找出错误的位置并进行修正。
    通常处理to...

  • C++ token与词法分析器

    C++ token与词法分析器

    在C++中,一个token是编程语言的最小单位,是词法分析器的输出结果。tokens可以是关键字、标识符、运算符、分隔符、常量和字符串等。
    词法分析器是编程语言...

  • 如何在C++中使用ANTLR进行语法解析

    如何在C++中使用ANTLR进行语法解析

    ANTLR(ANother Tool for Language Recognition)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它广泛应用于构建语言、工具和...

  • ANTLR在C++中的应用场景有哪些

    ANTLR在C++中的应用场景有哪些

    ANTLR(Another Tool for Language Recognition)是一个强大的开源工具,用于生成语法分析器,可以用于各种编程语言和领域特定语言(DSL)的开发。在C++中,ANTL...

  • C++ Excel库中如何实现自定义函数

    C++ Excel库中如何实现自定义函数

    在C++中,要实现自定义函数并在Excel中使用它,你需要使用一个库,如xlwings、XLL Plus或Excel SDK。这里我将介绍如何使用xlwings库实现自定义函数。 安装xlwing...

  • 如何利用C++ Excel库实现数据的导入导出

    如何利用C++ Excel库实现数据的导入导出

    要使用 C++ 操作 Excel 文件,可以使用一些第三方库,例如:xlnt、SimpleXlsxWriter、libxlsxwriter 等。这里我们以 xlnt 为例,介绍如何实现数据的导入导出。 首...