gpt4 book ai didi

c++ - 使用 std::thread 暂停/恢复异步进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:08 28 4
gpt4 key购买 nike

让我们假设存在以下类:


class MySession {
public:
run(); // can only be invoked once, starts a child _run() process as an async process
suspend();
resume();
private:
// basic implementation
run_() {
while(condition) {
runMyDefaultOperation();
// either waits for interval, or if suspended, waits until resume is called
waitFor(interval);
}
}
};

这工作得很好,但在可扩展性方面存在限制。此实现限制我暂停“ block ”。为了解决这个问题,我需要检查任意小代码块的 is_suspended 状态。

这种设计模式是否可以接受,或者我应该使用另一种设计模式来代替这样的任务吗?

最佳答案

我想说这种设计模式是可以接受的,而且是可扩展的:这里实现可扩展性的方法是将 Session 的工作分成更小的 block ,因此 runMyDefaultOperation() 每次都会执行一小块代码。

您可以使用 command pattern在某种程度上有助于构建工作。

作为旁注,实现suspendresumewait 的合适机制是condition variable .

关于c++ - 使用 std::thread 暂停/恢复异步进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42730111/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com