mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-21 12:00:18 +00:00
up
This commit is contained in:
parent
9b9e1b9fd0
commit
e5c96c2732
@ -840,10 +840,9 @@ extern "C" {
|
||||
}
|
||||
|
||||
__EXPORT
|
||||
/// Emit a KeyboardInterrupt signal in order to stop a running threaded virtual machine.
|
||||
void pkpy_tvm_keyboard_interrupt(VM* vm){
|
||||
// although this is a method of VM, it's only used in ThreadedVM
|
||||
vm->keyboardInterrupt();
|
||||
/// Emit a KeyboardInterrupt signal to stop a running threaded virtual machine.
|
||||
void pkpy_tvm_terminate(ThreadedVM* vm){
|
||||
vm->terminate();
|
||||
}
|
||||
|
||||
__EXPORT
|
||||
|
11
src/vm.h
11
src/vm.h
@ -1088,9 +1088,7 @@ class ThreadedVM : public VM {
|
||||
|
||||
void __deleteThread(){
|
||||
if(_thread != nullptr){
|
||||
if(_state == THREAD_RUNNING || _state == THREAD_SUSPENDED){
|
||||
keyboardInterrupt();
|
||||
}
|
||||
terminate();
|
||||
_thread->join();
|
||||
delete _thread;
|
||||
_thread = nullptr;
|
||||
@ -1109,6 +1107,13 @@ public:
|
||||
});
|
||||
}
|
||||
|
||||
void terminate(){
|
||||
if(_state == THREAD_RUNNING || _state == THREAD_SUSPENDED){
|
||||
keyboardInterrupt();
|
||||
while(_state != THREAD_FINISHED);
|
||||
}
|
||||
}
|
||||
|
||||
void suspend(){
|
||||
if(_state != THREAD_RUNNING) UNREACHABLE();
|
||||
_state = THREAD_SUSPENDED;
|
||||
|
Loading…
x
Reference in New Issue
Block a user