ejeker 发表于 2013-07-01 15:18

[结贴]为什么pthread有"线程取消点"的概念,而windows没有呢?

本帖最后由 ejeker 于 2013-07-02 08:57 编辑

弄了一阵子windows下的多线程编程,发现并没有pthread里面的"线程取消点"的概念。

这个是为什么?
Windows内核就支持多线程而linux只能用轻量的进程来模拟线程,所以需要"取消点"吗?

myworkstation 发表于 2013-07-01 21:24

也不能说完全没有相似点,早期的Windows的取消点的概念仅限于IO操作,可以参见cancelio,但是从vista开始这个概念得到了增强,可参见函数CancelSynchronousIo。虽然linux的取消点没有特别强调IO,但是你可以看一下支持取消点的函数大部分集中在IO操作函数上。所以实际上vista之后的系统在线程的概念上和linux是有很大相似性的。之所以linux从一开始就强调这一点我觉得首先是因为unix-like OSs系统中一切皆文件的概念和实现使然,令一方面也是posix的thread标准化相对windows出现的较晚有关,所以这个取消点的核心思想依然是和IO相关。
windows关于IO取消的信息请看:http://msdn.microsoft.com/en-us/library/aa480216.aspx
linux的请看:http://stackoverflow.com/questions/433989/posix-cancellation-points

ejeker 发表于 2013-07-02 08:56

myworkstation 发表于 2013-07-01 21:24 static/image/common/back.gif
也不能说完全没有相似点,早期的Windows的取消点的概念仅限于IO操作,可以参见cancelio,但是从vista开始这 ...

感谢高人!
页: [1]
查看完整版本: [结贴]为什么pthread有"线程取消点"的概念,而windows没有呢?