【发布时间】:2014-10-08 10:16:01
【问题描述】:
我的任务是扩展一个用 C 语言编写的正在进行的项目的实现,该项目已经运行良好,因此它将是多线程的。
我有多年的 Java 经验,但对 C 语言非常有限。所以基本上我有一些选择,如下所示:
- 将所有代码重写为 Java,然后在 Java 中实现多线程
- 通过JNI调用C库中的一些方法,在Java中实现多线程
- 学习 C 并继续使用 C 完成任务。
考虑到多线程版本不必从 C 库中获取最新更新,可能以后我可能需要将这些代码放入一些大数据框架中,例如 Hadoop。
为了找出哪个选项更适合我,根据您之前的经历,我需要 cmet 关于以下问题。
- 从 Java 调用 C 函数的流畅程度如何?是否有任何重大限制?
- 在 C 中实现多线程的优缺点是什么?
还有你认为哪个选项更好?
【问题讨论】:
-
我会投 1 票。我敢肯定也有人会投 3 票。但我们无法告诉您哪个更适合您。
-
请注意,当前的 C 代码不一定是线程安全的,因此选项 2 可能比仅仅创建一个 JNI 接口需要更多的工作。
-
@StephenC 这是一种用于聚类的生物信息学算法。主要与计算有关。
-
many years of experience with Java, but very limited for C, furthermore it's a bioinformatics algorithm for clustering: 不要选择3.,an ongoing project written in C that is already working well,如果它没有坏,不要修复它,不要选择1. -
@dresden - 这没有帮助。你在 C 方面有多好?爪哇?多线程有多好?调试?性能到底有多重要?谁为软件开发买单(例如你的薪水、奖学金等)……他们
标签: java c multithreading parallel-processing