c/c++语言开发共享Java和C / C ++之间MultiThread方面的差异

我已经阅读了一些提示,multithreading实现很大程度上取决于您正在使用的目标操作系统。 操作系统最终提供了multithreadingfunction。 比如Linux有POSIX标准实现和windows32有其他方式。

但我想知道编程语言水平的主要差异。 C似乎为同步提供了更多选择,例如Mutex,读写锁,记录锁定,Posix信号量。

但在Java中,我知道我们可以使用像Mutex这样的同步作品吗? 还有一些其他高级API,比如AtomicXX和volatile。 但我没有找到像记录锁定和读写锁的东西。 它是Java语言的弱点吗? 或者是跨平台的牺牲?

另外我想知道这是一个主要原因,像nginx这样的Web服务器和像oracle这样的数据库都是用C / C ++编写的吗?

我实际上是一名Java开发人员,我对它非常好奇。 希望有人可以给我一些建议。

编辑:

Paul和Jesper已经建议Java在JDK1.5之后支持所有类似的锁类,如C / C ++。 但是如果可能的话,我仍然希望有人可以解释为什么Java提供足够支持的更多细节,我们仍然找不到纯Java“oracle”。

编辑:

另外,我想添加一些有趣的东西,我是从Nasi Khan的developer.com上学到的。 了解Javamultithreading和读写锁 。

其中的一些话题。

编辑:

来自FileLock JavaDocs

文件锁代表整个Java虚拟机。 它们不适合控制同一虚拟机中多个线程对文件的访问。

Java中的文件锁与C / C ++中的文件锁完全相同。

UPDATE
我找到了另一个有趣的区域来比较
在C ++中,有一些类似的东西

atomic x, y; 

在JAVA中我们也有AtomicInteger 。 它们是一样的吗?

    Java确实提供了读写锁 – 。

    如果您还没有看过java.util.concurrent包,请查看。 我怀疑Java的支持与C相当。 还有许多用Java编写的Web服务器使用multithreading或异步IO(NIO)。

    在大多数方面,Java略高于C / C ++,主要是由于JVM提供的抽象。 因此,效率较低且远离OS。

    synchronized方法就是一个例子,实现可以根据底层操作系统使用不同的机制。

    由于这种效率较低,C / C ++对于一些效率非常重要的任务来说是首选,正如你提到的那样。

    我认为(由于JVM和更高级别的抽象)是C / C ++和Java之间差异的主要原因和来源,是如何处理线程以及其他差异只是这个主要差异的方面或后果。

    特别是关于读写锁 ,Java提供了使用它们的工具(如前面的注释中所指出的),并且很可能您可能想要使用的任何同步方法在Java中以某种方式可用或可实现。 JVM如何将其转换为OS调用以及结果的效率是另一回事。

    我相信Java有你提到的锁。

    如果您对此主题感兴趣,我会向您推荐Java Concurrency in Practice一书。

    需要了解更多c/c++开发分享Java和C / C ++之间MultiThread方面的差异,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享Java和C / C ++之间MultiThread方面的差异相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979507.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐