(Windows)我可以让程序在 运行 时更改或停止吗?

(Windows)Can I get the program to be changed or be stopped while it is running?

我现在正在用 C++ 编写一个 win32 程序。 我想在window上展示我的运行过程,就像时间在流逝

比如这段代码

int a=0;
for(int i=0;i<10;i++)
{
  a++;//The change in "a" can be seen on the window.
  Sleep(1*1000);
}

但我发现如果我想显示这个过程,比如点击一个按钮,屏幕上会出现一个不断变化的数字,那么程序需要一直 运行。在这一点上,我没有办法做任何其他事情,比如点击另一个按钮。

所以我意识到我需要一个可以中断当前进程的操作。但是我查阅了很多资料,发现只有Linux系统的fork()函数可以满足我的需求。但是我现在正在使用 Windows,那么还有什么其他方法可以实现这一点呢? 真诚期待您的回复。

您想创建一个包含 SetTimer. Then watch for the WM_TIMER 条消息的计时器,然后更新屏幕。这是实现您所描述内容的标准方法。

创建一个线程并使用原子。

std::atomic_int a_t(0);

auto do_a = [](std::atomic_int* pA)
{
for (int i = 0;i < 10;i++)
{
    (*pA)++;
    std::this_thread::sleep_for(1s);
}
};

thread t(do_a, &a_t);
t.join();
cout << a_t.load(memory_order::memory_order_relaxed);

任何时候你需要获取 a_t 的值,只需调用 a_t.load(memory_order::memory_order_relaxed);

希望对您有所帮助