首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C多线程起源

C多线程起源
EN

Stack Overflow用户
提问于 2009-04-21 21:18:23
回答 6查看 1.2K关注 0票数 5

在我复制的C程序设计语言 (又名: K&R)中,似乎没有提到多线程。这本书是不是没有我想象的那么完整?多线程是在编写之后出现的吗?我是不是想错了?

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

编辑:,我想我最初的问题是:

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

这一矛盾的原因何在?多线程的起源在哪里?如果POSIX,那么POSIX是用什么写的,如果不是C?C无法访问的一种程序集?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-21 21:20:08

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

现在,尽管如此,我非常肯定的是,当第一版K&R发布时,Unix并不支持线程。由于C最初是作为Unix环境的一种系统语言实现的,因此它不支持原生线程也就不足为奇了。

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

票数 14
EN

Stack Overflow用户

发布于 2009-04-21 21:23:25

这本书很完整。C能够运行线程,但只有在它所处的运行时才能支持.C本机不支持许多东西。例如,如果您想打开一个文件或从鼠标获得输入,您将需要一个库来支持您。这在某种程度上是好的,因为它意味着C可以在一台小型嵌入式计算机上运行,并且不需要太多的内存来满足您可能或不想要的功能。

多线程在C之前就已经出现了(根据这个:http://www.cs.clemson.edu/~mark/multithreading.html )

你需要一个线程库。在窗户上你可以:

代码语言:javascript
复制
#include "Windows.h"

int main()
{
   CreateThread(/*Google the function for details of the parameters.*/);   
   return 0;
}

为此,您需要下载。大多数平台都有某种类型的sdk,其中有一个具有创建线程功能的库。大多数都有一个CreateThread样式函数,其中传递一个函数的地址,您希望新启动的线程与主函数上开始的当前线程并行运行。

您可能需要查找的一个标准化线程库是posix。

票数 4
EN

Stack Overflow用户

发布于 2009-04-21 21:24:35

如果我没记错的话,多线程实际上比C编程语言更晚才被普遍使用。POSIX线程库是在Unix/Linux程序中执行多线程的典型方法,而不是标准库的一部分。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/774661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档