首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减轻经常被调用的函数?

如何减轻经常被调用的函数?
EN

Stack Overflow用户
提问于 2019-11-19 21:51:18
回答 1查看 63关注 0票数 0

我有一个函数,每秒调用5-6次,执行一些内部处理,然后向外部系统发送命令。外部系统不适合以这种速度输入的句柄命令。我怎样才能使函数每秒钟(或其他一些可配置的数量)只经过一次处理,而不管函数被调用的频率如何?

我尝试使用一个锁,但这只会导致随后的函数调用等待上一个函数调用的完成。我觉得我想得太多了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-20 02:19:19

也许像下面这样的例子?请注意,在这个程序中,MyFunction()被称为多(千?)但它仅(假装)每秒发送一次数据。

代码语言:javascript
复制
#include <chrono>
#include <iostream>

typedef std::chrono::steady_clock::time_point my_time_point_type;

void MyFunction()
{
   static my_time_point_type previousSendTime;

   const my_time_point_type now = std::chrono::steady_clock::now();

   const long long nanosSinceLastSend = (now-previousSendTime).count();
   if (nanosSinceLastSend > 1*1000000000LL)
   {
      std::cout << "SEND DATA NOW!" << std::endl;
      previousSendTime = now;
   }
}

int main(int argv, char ** argc)
{
   while(1)
   {
      MyFunction();
   }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58943364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档