如何在类内并发运行某些东西(在单线程平台中?)>

问题描述 投票:0回答:1

我必须编写一个实现此接口的类。当我调用启动函数时,它应该每1毫秒开始计数;当我调用停止函数时,它应该停止计数,而读函数应返回计数器的值。我怎么写这个?该项目适用于没有任何rtos的微控制器。该项目是单线程的。请给我一种编写此代码的方法。 无操作系统和多线程

class Counter{
public:
void stop()=0;
void start()=0;
int read()=0;
};

示例:

int main()
{
   Counter *cnt = new Counter_Implemented();
   cnt->start();
   //do some heavy task here
   cnt->stop();
   int duration = cnt->read();
}

感谢您的帮助!

我必须编写一个实现此接口的类。当我调用start函数时,它应该每1毫秒开始计数;当我调用stop函数时,它应该停止计数,然后...

c++ c++17 microcontroller stm32 single-threaded
1个回答
1
投票

您可以使用两个时间戳之间的时差来实现此目的。让start存储当前时间戳,然后停止将存储结束时间戳。然后,read会给您带来差异,或者如果计时器当前正在运行,则可以得到now与起点之间的差异。看起来像

© www.soinside.com 2019 - 2024. All rights reserved.