Fixed cancellation mechanism
This commit is contained in:
parent
4e41e46975
commit
0560298f0f
|
@ -184,7 +184,7 @@ async def cancel(task: Task, block: bool = False):
|
|||
:type block: bool, optional
|
||||
"""
|
||||
|
||||
await syscall("cancel", task)
|
||||
await syscall("cancel", task, block)
|
||||
if block:
|
||||
await wait(task)
|
||||
if not task.state == TaskState.CANCELLED:
|
||||
|
|
|
@ -422,7 +422,7 @@ class FIFOKernel:
|
|||
self.handle_errors(partial(k.data.throw, exc), k.data)
|
||||
self.reschedule_running()
|
||||
|
||||
def cancel(self, task: Task):
|
||||
def cancel(self, task: Task, block: bool = True):
|
||||
"""
|
||||
Attempts to cancel the given task or
|
||||
schedules cancellation for later if
|
||||
|
@ -434,7 +434,8 @@ class FIFOKernel:
|
|||
task.pending_cancellation = True
|
||||
self.io_release_task(task)
|
||||
self.paused.discard(task)
|
||||
self.reschedule_running()
|
||||
if not block:
|
||||
self.reschedule_running()
|
||||
|
||||
def handle_errors(self, func: Callable, task: Task | None = None):
|
||||
"""
|
||||
|
|
Reference in New Issue