在我复制的C程序设计语言 (又名: K&R)中,似乎没有提到多线程。这本书是不是没有我想象的那么完整?多线程是在编写之后出现的吗?我是不是想错了?
多线程的概念在哪里适合C世界?
编辑:,我想我最初的问题是:
这一矛盾的原因何在?多线程的起源在哪里?如果POSIX,那么POSIX是用什么写的,如果不是C?C无法访问的一种程序集?
发布于 2009-04-21 21:20:08
C是一种相当低级的语言。在一个典型的C程序中,对线程的支持来自于操作系统,而不是C运行时--如果您的环境不支持线程,那么您必须自己实现它们,找到一个执行线程的库,或者不使用线程。这与Java这样的语言形成了鲜明的对比,Java运行时环境提供了许多保证Java程序可以使用的服务,不管底层操作系统是否以Java平台公开的方式支持它们。
现在,尽管如此,我非常肯定的是,当第一版K&R发布时,Unix并不支持线程。由于C最初是作为Unix环境的一种系统语言实现的,因此它不支持原生线程也就不足为奇了。
如果您正在为类似Unix的环境编写代码,如果您需要一个支持良好的API来在C中实现多线程程序,请查找POSIX线程。
发布于 2009-04-21 21:23:25
这本书很完整。C能够运行线程,但只有在它所处的运行时才能支持.C本机不支持许多东西。例如,如果您想打开一个文件或从鼠标获得输入,您将需要一个库来支持您。这在某种程度上是好的,因为它意味着C可以在一台小型嵌入式计算机上运行,并且不需要太多的内存来满足您可能或不想要的功能。
多线程在C之前就已经出现了(根据这个:http://www.cs.clemson.edu/~mark/multithreading.html )
你需要一个线程库。在窗户上你可以:
#include "Windows.h"
int main()
{
CreateThread(/*Google the function for details of the parameters.*/);
return 0;
}为此,您需要下载。大多数平台都有某种类型的sdk,其中有一个具有创建线程功能的库。大多数都有一个CreateThread样式函数,其中传递一个函数的地址,您希望新启动的线程与主函数上开始的当前线程并行运行。
您可能需要查找的一个标准化线程库是posix。
发布于 2009-04-21 21:24:35
如果我没记错的话,多线程实际上比C编程语言更晚才被普遍使用。POSIX线程库是在Unix/Linux程序中执行多线程的典型方法,而不是标准库的一部分。
https://stackoverflow.com/questions/774661
复制相似问题