C多线程起源

Din*_*nah 5 c multithreading

在我的C编程语言(又名:K&R)中,似乎没有提到多线程.这本书不如我想象的那么完整吗?多线程在写完之后出现了吗?我是否以错误的方式思考这个问题?

多线程的概念在哪里适合C世界?


编辑:我认为我原来的问题是:

  • 你可以用C写任何东西
  • 多线程存在
  • 你不能在C < - 逻辑矛盾中写多线程

这个矛盾是什么原因造成的?多线程的起源在哪里?如果是POSIX,那么如果不是C,那么POSIX写的是什么?C无法访问的一种装配形式?

Ori*_*ach 14

C是一种非常低级的语言.对典型C程序中的线程的支持来自操作系统,而不是来自C运行时 - 如果您的环境不支持线程,那么您必须自己实现它们,找到一个执行它的库,或者没有线程.这与Java之类的语言形成对比,在Java语言中,运行时环境提供了许多保证可供Java程序使用的服务,无论底层操作系统是否以Java平台公开的方式支持它们.

现在,说了这些,我很确定在第一版K&R发布时,Unix不支持线程.由于C最初是作为Unix环境的系统语言实现的,因此它没有本机线程支持也就不足为奇了.

如果您正在为类似Unix的环境编写代码,那么在需要一个支持良好的API以在C中实现多线程程序时,请查找POSIX线程.