C是单线程语言吗

时间:2018-06-22 05:59:12

标签: c multithreading

我最近正在阅读Ritchie的“ The C Programming language”,我注意到C是一种单线程语言。好吧,我想知道单线程语言和多线程语言之间的实际区别是什么。如果C是单线程,那么它是异步的还是同步的?

2 个答案:

答案 0 :(得分:6)

C编程语言现在是一种标准,因此请阅读C11规范,即n1570。请记住,编程语言是规范 (因此在某些技术报告中已定义)不是软件。 Ritchie的书是关于C的较旧版本的(当时写的是1980年代,当时没有多核计算机和多线程,或者在非常不寻常的地方,Ritchie本人也没有这样的计算机或系统)。 C标准(宽松地)定义了C实现的行为(并且undefined behavior是一个非常重要且棘手的概念)。

C11中有一些thread支持。

您还可以将C99(甚至C11)与某些外部库一起使用,例如POSIX上的pthreads,以提供线程。

您可以将线程(以及进程和文件)视为operating systems提供的某些功能或抽象。语言规范通常不会告诉他们太多信息(例如,大多数操作系统都具有directories,但是C标准却没有告诉他们任何信息)。

实际上,如果您仔细阅读C11标准,您可能会注意到它甚至不需要(隐式包含)计算机硬件。原则上,C语言实现可以是一个团队(并且“在教室中运行C程序,被视为计算机”是一种很好的C语言教学方法)。在实践中,使用人类奴隶作为C实现是不道德且效率低下的,您应该首选计算机(但C11标准未定义计算机)。

答案 1 :(得分:1)

它不依赖于单线程或多线程的语言。您可以使用库来实现线程。像在C中一样,您在C99标准的POSIX上具有 pthread 库。同样在python中,您也可以创建线程。它基本上与操作系统有关,通常用于需要进行一些输入输出操作的地方。

  

在计算机科学中,执行线程是   程序化指令可以由   调度程序,通常是操作系统的一部分。

Threads in OS