首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux:在这种情况下,我应该使用进程还是线程?

Linux:在这种情况下,我应该使用进程还是线程?
EN

Stack Overflow用户
提问于 2014-04-19 17:01:04
回答 2查看 183关注 1票数 1

linux系统,两个rs485端口,~50个设备连接在这两个端口上。~系统中来自linux本身的100个进程。4核心臂。在许多方面,它就像一个linux桌面,我们的应用程序运行。可能会变得很忙,比如你在linux下打开办公室的那一刻。

  1. 最初的设计是这样的,测试也足够好,主应用程序本身有10个线程。对于每个rs485,主进程产生一个进程来监视这个端口上的所有设备。(因为这是串行总线,它基本上是一个for循环,对每个设备执行tx/rx 1×1。我们在两个rs485进程中没有锁。)总共有3个过程。每个rs485进程不相互交谈,它们只通过命名管道与主进程对话。
  2. 现在ppl要求我更改为使用线程。所以只有一个进程,12个线程。这个rs485线程没有线索就崩溃了,没有核心文件。Ppl一遍又一遍地查看代码,但仍然一无所知。

他们不想回到进程,因为使用相同名称的1.3进程是令人困惑的。2.我们不知道如何将gdb附加到要调试的进程。如果只有一个过程,就更容易了。

如果你们能帮我处理这些

Q1:我想我们可以更改进程名,对吗?或者为每个进程创建pid文件,我是新手。

Q2:如果您有三个同名的进程,那么调试有多难?特别是我想调试子进程,如何在gdb中做到这一点?我是否可以在代码中设置断点,表示这是个子元素,在fork()之后?

如果我在fork()之后更改子进程名,那么如何调试子进程名呢?

Q3:为什么线程可以在没有核心文件的情况下死掉,而主进程/线程总是可以生成代码文件?

问题4:在这种情况下,如果您使用线程而不是进程,您可以得到什么?(在我看来,这只会带来麻烦。)

Q5:通过线程或进程命名管道,性能差异很大吗?

非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2014-04-19 17:18:04

开发多线程应用程序要困难得多,可能对您的团队来说更早。回到单独的过程方法。

1)什么?

2)通过pid将gdb附加到正在运行的进程中。

3)可以直接在线程之间传递数据,共享内存

4)命名管道在这两种情况下都很慢,不需要使用线程

票数 0
EN

Stack Overflow用户

发布于 2014-04-19 17:19:08

Q1 -进程名只是可执行文件的名称。你可能不想改变它。不过,您可以跟踪pid文件中每个实例的pid。

Q2 -在不同的进程中拥有东西应该会使调试变得更容易一些,因为它减少了潜在的交互。注意,这在很大程度上是一种主观观点。Gdb可以为pid附加一个命令行选项。

Q3 --这将取决于为什么事情正在消亡。除非您正在处理信号处理程序,否则Seg故障和类似的故障应该会导致两者终止。

当大量的交互活动、通信或同步或大量的创建/破坏正在进行时,Q4线程往往更高效。

Q5 --不明白为什么会有任何显著的差异。在这样或那样的情况下,图片的某些部分会更快,但我希望最终的结果是收支平衡。

编辑:正如Basilevs所建议的-回到过程。它们更容易使用,而您以前也让它们工作过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23172908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档