holyya.com
2025-09-05 02:11:25 Friday
登录
文章检索 我的文章 写文章
C++如何暂停代码?
2023-06-29 18:32:42 深夜i     --     --
C++ 暂停 代码

在编写C++代码时,暂停代码通常是非常有用的,特别是当需要等待某个进程完成或者在某个特定时间间隔内执行代码时。幸运的是,C++提供了一些方法来实现代码暂停。

使用sleep()函数

在C++中,可以使用sleep()函数来让代码暂停指定的时间。这个函数通常需要传递一个整数参数来指定暂停的时间长度,单位是秒。

例如,下面的代码可以使程序暂停5秒钟:


#include <iostream>

#include <ctime>

#include <unistd.h>

int main() {

  std::cout << "Start sleeping..." << std::endl;

  sleep(5);

  std::cout << "Wake up!" << std::endl;

  return 0;

}

在运行这段代码时,它会输出"Start sleeping...",然后暂停5秒钟后输出"Wake up!"。

使用chrono库

C++11中引入了一个新的标准库chrono,它提供了用于时间管理的工具。可以使用chrono::milliseconds()来指定代码暂停的时间长度,单位是毫秒。

例如,下面的代码可以使程序暂停2秒钟:


#include <iostream>

#include <chrono>

#include <thread>

int main() {

  std::cout << "Start sleeping..." << std::endl;

  std::this_thread::sleep_for(std::chrono::milliseconds(2000));

  std::cout << "Wake up!" << std::endl;

  return 0;

}

在运行这段代码时,它会输出"Start sleeping...",然后暂停2秒钟后输出"Wake up!"。

使用条件变量

如果需要在特定条件下暂停代码,可以使用条件变量。条件变量是一种同步机制,用于当某个特定条件得到满足时,线程才会继续执行。

例如,下面的代码可以使程序暂停直到输入了字符'a':


#include <iostream>

#include <mutex>

#include <condition_variable>

std::mutex m;

std::condition_variable cv;

bool ready = false;

void wait() {

  std::unique_lock<std::mutex> lock(m);

  while (!ready) {

    cv.wait(lock);

  }

  std::cout << "Ready!" << std::endl;

}

void signal() {

  std::unique_lock<std::mutex> lock(m);

  ready = true;

  cv.notify_one();

}

int main() {

  std::thread t1(wait);

  std::cout << "Press 'a' to continue..." << std::endl;

  char c;

  std::cin >> c;

  signal();

  t1.join();

  return 0;

}

在运行这段代码时,它会输出"Press 'a' to continue...",然后暂停代码直到输入了字符'a',此时程序输出"Ready!"。

总结

C++提供了多种方式来暂停代码。sleep()函数可以在固定时间长度内暂停代码,chrono库可以精确控制代码的暂停时间,而条件变量可以让代码在满足特定条件时暂停。选择哪种方法取决于你的应用程序需要实现的功能和需求。

  
  

评论区

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