Statt das alles selber zu machen, oder um da bissl abzugucken, würde ich empfehlen sich mal die Fiber anzusehn.
Im Prinzip machen die genau das, was du willst.
https://docs.microsoft.com/en-us/win...d/using-fibers
Und sogar die neue Threading-
API im Delphi hat mit TTask und TFuture etwas, was vom Verhalten dem sehr nah kommt.
System.Threading