应用程序编程中的线程化

时间:2010-11-08 18:19:46

标签: java c

为什么在应用程序开发方面,C线程库(pthreads)不像java那样受欢迎?

这只是内存管理问题还是涉及其他主要优势?

8 个答案:

答案 0 :(得分:7)

pthreads并未在所有操作系统上本机实现,例如Windows(有一个Win32 API)。事实上,C作为一种语言没有线程的概念。

Java是使用集成到该语言中的线程构建的。 C不是。

答案 1 :(得分:4)

它不是完全可移植的--pthreads是POSIX的一部分,通常不在(对于一个明显的例子)Windows下提供。

C ++ 0x为标准库添加了线程原语(并且它们与pthreads非常相似),这是大多数新代码很快就会开始使用的(有些已经开始使用)。

pthreads也相当低级,使用起来很痛苦;对于许多相对简单的线程情况,许多应用程序可能最好使用futures(大致类似于同名的Java对象)。

答案 2 :(得分:2)

这完全取决于您编写的应用程序类型。也许您所指的应用程序使用Java等高级语言编写更方便。

答案 3 :(得分:1)

除了其他人提到的(非)可移植性问题之外,实现pthread的系统通常还实现了廉价且简单的多进程编程,这就是并行unix程序的编写方式非常很长时间。

答案 4 :(得分:1)

我认为线程在在Java中很流行,例如因为很难进行异步I / O.在我看来,Java中的库是以线程良好的态度设计的。使用C的图书馆设计师只是采取相反的态度:)

答案 5 :(得分:0)

Qt框架为C ++中的threads提供了一个独立于平台的实现 它从java中大量借用,并且比之前提到的一些库更新,所以它仍然越来越受欢迎。

答案 6 :(得分:0)

肯定这是一个关于Java vs C而不是一个库而不是另一个库的流行度的问题。我想大多数开发人员选择开发语言而不是线程库。一旦选择了语言,这就会限制库的选择;毕竟你不能在Java中使用pthread。

另一点是,在C中没有标准的线程库,尽管pthreads通常可以在许多平台上使用。

我也怀疑这个前提;如果我们假设你真的意味着Java比C更受欢迎(因为这可能是暗示),那么我怀疑它是否真的一般。在某些应用领域可能,但它是not an easy thing to measure。根据{{​​3}},您可以使Java,C,C ++,PHP,JavaScript,Python甚至D看起来像世界上最流行的编程语言。

有可能我认为如果你选择使用多线程,这可能会导致决定选择Java(虽然我也对此表示怀疑),但这与在线程上选择pthread相比是一个不同的决策过程。 / p>

答案 7 :(得分:0)

Java主要是应用程序编程语言,因此有更多的人和公司参与其中,而c更多的是系统级编程和核心编程,与应用程序编程相比,它不那么受欢迎。