c++ : Pthreads or Linux processes

c++ : Pthreads or Linux processes

本文关键字:Linux processes or Pthreads c++      更新时间:2023-10-16

让我们假设我在Linux上的c++中有不同的数据结构

Data1, Data2, Data3, Data4 and many more
之后,我使用网络跟踪文件(wireshark文件)。将每个数据包发送到上述所有数据文件。如果它们中的任何一个为数据包设置了一个标志。我希望所有其他数据文件停止对该数据包的处理,并移动到该网络跟踪文件中的下一个数据包。

在我的场景中,哪一个会更好:

进程有单独的地址空间,其中每个进程都有单独的堆、堆栈和代码。加载过程需要操作系统创建和管理内存资源。数据传输需要操作系统的支持,需要进程间通信技术,如Linux中的共享内存或管道。此外,每次访问受共享信号量保护的数据时,都需要系统调用。这会大大降低你的速度。操作系统保护进程免受其他进程的影响。如果一个程序运行正常,那么另一个程序破坏它的可能性就很难。进程创建了一个沙盒,在那里你的代码是安全的。

线程的重量更轻。创建和删除需要更少的时间和负担得起。没有单独的地址空间(页表)。易于彼此共享数据。不需要操作系统支持。但是线程更容易受到其他线程错误的影响。对于共享数据,还需要并发工具,如信号量或互斥锁。

一个小的例子是,大多数浏览器使用线程来管理选项卡。但是当一个应用程序失败时,大多数应用程序都会崩溃。但Chrome将每个标签和扩展作为不同的进程运行;如果一个崩溃了,还有其他的没有大问题。

如果你不确定,就使用线程。他们会毫无问题地满足你在问题中所述的需求。