danvratil / qcoro

C++ Coroutines for Qt
https://qcoro.dvratil.cz
MIT License
326 stars 53 forks source link

Implement coroutine features and guardThis feature (#177) #191

Open danvratil opened 10 months ago

danvratil commented 10 months ago

By calling co_await QCoro::thisCoro() user can obtain CoroutineFeatures object specific to the current coroutine, and through it they can control behavior of the coroutine.

The one feature implemented so far is "guardThis", which monitors the lifetime of a given QObject-derived object. If the object is destroyed while the coroutine is suspended, when the time comes to resume it, it is destroyed instead. This is mostly useful to watch lifetime of this, so that when a member coroutine function is suspended and the object is deleted in the meantime, it will prevent the coroutine from continuing with a dangling this pointer when resumed.