21xrx.com
2024-11-05 23:25:20 Tuesday
登录
文章检索 我的文章 写文章
C++ 线程如何暂停?
2023-07-01 11:49:40 深夜i     --     --
C++线程 暂停 sleep()函数

C++ 程序中的线程是指在程序中可以同时运行的多个独立执行流。在实际应用过程中,有时需要暂停某个线程的执行,例如等待某些条件满足再继续执行,这时可以使用线程的暂停功能。

C++ 中线程的暂停可以通过使用 sleep() 函数来实现。该函数接收一个时间参数,单位为毫秒,表示暂停的时间长度。例如,如果需要暂停执行 2 秒钟,可以使用以下语句:


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

另外,线程还可以通过条件变量实现暂停和唤醒。条件变量是一种同步机制,允许线程等待某些条件变为真。当条件达成时,可以通过调用条件变量的 notify_one() 或 notify_all() 方法来通知等待的线程,让它们恢复执行。

下面是一个使用条件变量实现线程暂停的示例代码:


#include <mutex>

#include <condition_variable>

std::mutex mtx;

std::condition_variable cv;

bool ready = false;

void thread_func()

{

  // 等待条件变量变为真

  std::unique_lock<std::mutex> lk(mtx);

  cv.wait(lk, []{return ready;});

  // 条件达成,继续执行

  // ...

}

int main()

{

  // 创建线程并启动

  std::thread t(thread_func);

  // 暂停 2 秒钟

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

  // 设置条件变量为真,通知线程恢复执行

  {

    std::lock_guard<std::mutex> lk(mtx);

    ready = true;

  }

  cv.notify_one();

  // 等待线程执行结束

  t.join();

  return 0;

}

以上是 C++ 中线程的暂停方法,可以根据具体需求选择使用不同的方法来实现线程的暂停和唤醒。

  
  

评论区

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