【发布时间】:2015-02-07 02:16:54
【问题描述】:
我试图弄清楚 C++ 中的取消点到底是什么。我已阅读:
man page 和 What are pthread cancellation points used for
但我在某些方面仍然有些困惑。例如,我正在使用文件 write() 函数。显然这是一个取消点。所以当我调用 write() 时,我可以看到另一个线程可能开始处理(所以我的代码从写入线程切换到另一个线程),这通常发生在写入缓冲区已满并且需要在写入之前清空时() 可以成功/完成。
但在我看来,这不是取消线程,而只是暂时的阻塞/挂起,没有线程“清理”可做……
所以我的问题是,取消点是否与“阻塞点”有关? - 它们真的是一回事,还是有一些不同? 任何关于取消点的明确“顶级”描述都会非常有用。
【问题讨论】:
-
取消点通常是控制流中控制返回调度程序的任何点。 “取消”的唯一可能含义是不再被安排,因此只有在可以影响安排决策的情况下才能取消某些内容。系统调用形成与调度程序的自然交互,尽管可能还有其他调用。
-
@KerrekSB 有了这个评论和 Bogdan V 的回答,我认为这对我来说真的很有意义,谢谢 :)
-
感谢@KerrekSB 对调度程序的清晰、简洁和可靠的解释。
标签: c++ cancellation