问题描述
||
我只是将脚趾浸入POSIX池中,并首次尝试了POSIX线程。到现在为止,我一直感觉到POSIX线程和Win32线程之间存在很大的体系结构差异,但是从我尝试过的(虽然很小)来看,我并没有真正看到任何差异。
我仍然很好奇-POSIX线程和Win32线程之间有什么区别(如果有)?它们从根本上是不同的,还是仅存在细微的差异?
解决方法
在Windows NT系列内核和许多Unix内核中,“如何在后台”管理和调度线程之间存在巨大差异,但这不是问题。
如果您只是在谈论接口(由Win32线程和POSIX线程公开的服务),通过一些工作,您几乎可以将任何POSIX线程功能映射到Win32等效的〜1:1。并且它已经完成(请参阅pthreads-win32)。
我可能注意到的一个很大的不同是,在Win32下,您使用实际的系统调用来处理线程,而POSIX线程的调用是库(pthread)的一部分,在许多Unix系统下,它调用了一些非常底层的系统调用。 Unix内核(在Linux下为clone())。
只是为了向您证明,除非深入研究,否则pthreads没什么特别的,您可以下载暴露了与pthreads完全相同的接口的pthreads-win32,并且任何函数都映射在Win32线程API上。而且有效。