VirtualC64 v5.0 beta
Commodore 64 Emulator
Loading...
Searching...
No Matches
Suspendable.h
1// -----------------------------------------------------------------------------
2// This file is part of VirtualC64
3//
4// Copyright (C) Dirk W. Hoffmann. www.dirkwhoffmann.de
5// This FILE is dual-licensed. You are free to choose between:
6//
7// - The GNU General Public License v3 (or any later version)
8// - The Mozilla Public License v2
9//
10// SPDX-License-Identifier: GPL-3.0-or-later OR MPL-2.0
11// -----------------------------------------------------------------------------
12
13#pragma once
14
15#include <cstdio>
16
17namespace vc64 {
18
21
22public:
23
24 Suspendable() { }
25 virtual ~Suspendable() = default;
26
28 virtual void suspend() = 0;
29
31 virtual void resume() = 0;
32};
33
34struct AutoResume {
35
36 Suspendable *s;
37 AutoResume(Suspendable *s) : s(s) { s->suspend(); }
38 ~AutoResume() { s->resume(); }
39};
40
41#define SUSPENDED AutoResume _ar(this);
42
43}
Suspend-resume mechanism.
Definition Suspendable.h:20
virtual void suspend()=0
Suspends the thread.
virtual void resume()=0
Resumes the thread.
VirtualC64 project namespace.
Definition CmdQueue.cpp:16