libco
libco copied to clipboard
协程被长期被任务执行 无法结束 该怎么办
一个很好的问题,如果你使用 s_task, 有个函数 s_task_cancel_wait,可以让处于等待状态的协程立刻结束等待。这样在等待中的函数会退出,并返回错误代码,协程代码就可以进行后续处理了。 这个方式只是退出等待函数,很安全,比暴力杀死协程好,不会造成资源泄露。
另外关于等待函数,s_task还加入了两个参数 __await__,__async__,标记哪些函数是要等待的。如此,多任务编程时,程序员很明确的知道,在何时cpu会被切换,在何时cpu不会被切换。这样使用共享变量更容易和安全。 我几乎看了所有的C协程库,都没引入有传染性的 await/async 机制,不知道各位用的放不放心?