21xrx.com
2024-11-05 18:49:16 Tuesday
登录
文章检索 我的文章 写文章
C++如何暂停线程
2023-07-08 16:14:47 深夜i     --     --
C++ 线程 暂停

C++是一种非常强大的编程语言,可以用于创建高效的多线程应用程序。然而,在一些情况下,需要对线程进行暂停以达到一些特定的目的。本文将介绍如何在C++中暂停线程。

使用std::this_thread::sleep_for()函数暂停线程

最简单的暂停线程方法是使用std::this_thread::sleep_for()函数。这个函数可以让线程休眠一段时间。例如,如果要在程序中让当前线程休眠3秒钟,可以使用以下代码:

std::this_thread::sleep_for(std::chrono::seconds(3));

这个函数需要传入一个std::chrono::duration类型的参数,该类型表示时间量。在这个例子中,std::chrono::seconds表示3秒钟。

使用std::condition_variable暂停线程

如果需要在某个条件满足之前暂停线程,可以使用std::condition_variable。这个类使得一个或多个线程可以等待条件的发生。在等待期间,线程会被暂停,并且不会消耗CPU资源。

以下是使用std::condition_variable暂停线程的示例代码:

std::mutex mtx;

std::condition_variable cv;

void thread_func()

{

  // 等待条件变量

  std::unique_lock lk(mtx);

  cv.wait(lk);

  // do something

}

void main_func()

{

  // 创建线程

  std::thread t(thread_func);

  // do something

  // 触发条件变量

  cv.notify_one();

  // 等待线程结束

  t.join();

}

在这个例子中,线程函数在调用cv.wait()之后会被暂停,并等待条件变量。在主函数中,调用cv.notify_one()来触发条件变量,使得线程可以继续执行。

总结

C++提供了多种方法来暂停线程,其中最简单的方法是使用std::this_thread::sleep_for()函数,而如果需要在条件满足之前暂停线程,则可以使用std::condition_variable。当然,在实际应用中,需要根据具体的情况选择最合适的方法来实现线程暂停。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复