多线程项目结构

时间:2015-06-28 14:49:14

标签: c multithreading project-structure

我正在开发一个涉及三个线程之间交互的项目。 线程函数的代码很长,把所有东西放在一个文件中似乎不太好主意,因为它变得无法管理。

单独编译线程函数然后链接所有内容是一个有意义的解决方案吗?

显然,线程之间共享了很多数据结构。

将项目分成更多文件的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

  

单独编译线程函数然后链接所有内容是一个有意义的解决方案吗?

一般来说:是的。

将常用内容(如类型和定义)放入头文件(.h)中,然后由需要它们的模块(.c)包含。

每个模块还获取它的分离头文件,为其功能提供原型。

答案 1 :(得分:0)

这是我最近做的事情,它与你的要求相似。我遵循的方法可能对你有所帮助。它是用c ++完成的,但在c中实现整个事情应该不是问题。

  1. 通常,应用程序的main在单独的文件中运行,文件除了main之外没有太多(除了一些静态全局常量)。

  2. 然后是经理类(或结构)。所以主要做的就是创建该经理类的一个实例并运行它。管理器在run方法期间创建了私有类实例(每个线程一个)。在我的情况下,功能明显是分开的,所以我在单独的源文件中实现它们,接口非常有限,暴露给调用者管理器类。作为一个人的想法可以非常容易地扩展功能,而管理者不必知道它。

  3. 如果共享数据有更多操作,我会使用共享数据结构并在单独的文件中实现。结构化的那些共享数据的指针(或向量或其他)在与线程相关联的每个类中可用。

  4. 但是2和3都是由你在每个线程中所做的事情定义的,如果大多数线程是相同的,你可能想要将它们组合在一起,但仍然希望将共享数据保存在文件中。 Atleast帮助人们在逻辑上构建代码。在你的情况下,如果你想在c中实现并且你最终做了很多重复,你可能会更好,然后在一个文件中使用所有特定于线程的实现并使用静态函数(用于隐藏来自世界其他地方的信息) )。

    说完了 - 你可能想先从几个文件开始    - 一个驱动程序 - 一个实现main和    - 另一个实现所需功能(两个线程可能) 然后在开始添加更多代码时开始分离。这将帮助您开始编写一些代码,而无需花费大量时间考虑如何组织它。记住,通常很难在第一时间把事情做好,所以从一些有效的东西开始然后移动东西是一个有价值的想法。

    总是开始编写Makefile也是一个好主意。当你移动东西时构建东西会更容易。

    希望有所帮助。