POSIX线程与Win32线程

时间:2011-04-13 05:45:38

标签: multithreading pthreads posix

我只是dipped my toes进入POSIX池并第一次尝试了POSIX线程。到目前为止,我一直认为POSIX线程和Win32线程之间存在很大的架构差异,但是从我尝试过的(实际上很少),我没有看到任何差异。

我仍然很好奇 - POSIX线程和Win32线程之间有什么区别(如果有的话)?它们在根本上是不同的,还是只是有微小的差异?

2 个答案:

答案 0 :(得分:12)

在Windows NT系列内核和许多Unix内核中,“如何管理和调度线程”之间存在巨大的差异,但这不是问题

如果您只是谈论接口(Win32线程和POSIX线程公开的服务),通过一些工作,您几乎可以将任何POSIX线程功能映射到Win32等效的~1:1 。它已经完成(参见pthreads-win32)。

我可能会注意到的一个很大的区别是,在Win32下你使用实际的系统调用来处理线程,而POSIX线程的调用是库的一部分 pthreads ),在许多Unix系统下,调用Unix内核的一些非常低级别的系统调用(在Linux下有clone())。

为了证明这一点,除非你非常深入,pthreads没什么特别之处,你可以下载pthreads-win32,它暴露了完全相同的pthreads接口,并且任何函数都映射在Win32线程API上。它有效。

答案 1 :(得分:0)

与 Windows 的 there's no POSIX equivalentCREATE_SUSPENDED 似乎有一个微小但至关重要的区别。