c++ : Pthreads or Linux processes
c++ : Pthreads or Linux processes
让我们假设我在Linux上的c++中有不同的数据结构
Data1, Data2, Data3, Data4 and many more
之后,我使用网络跟踪文件(wireshark文件)。将每个数据包发送到上述所有数据文件。如果它们中的任何一个为数据包设置了一个标志。我希望所有其他数据文件停止对该数据包的处理,并移动到该网络跟踪文件中的下一个数据包。
在我的场景中,哪一个会更好:
进程有单独的地址空间,其中每个进程都有单独的堆、堆栈和代码。加载过程需要操作系统创建和管理内存资源。数据传输需要操作系统的支持,需要进程间通信技术,如Linux中的共享内存或管道。此外,每次访问受共享信号量保护的数据时,都需要系统调用。这会大大降低你的速度。操作系统保护进程免受其他进程的影响。如果一个程序运行正常,那么另一个程序破坏它的可能性就很难。进程创建了一个沙盒,在那里你的代码是安全的。
线程的重量更轻。创建和删除需要更少的时间和负担得起。没有单独的地址空间(页表)。易于彼此共享数据。不需要操作系统支持。但是线程更容易受到其他线程错误的影响。对于共享数据,还需要并发工具,如信号量或互斥锁。
一个小的例子是,大多数浏览器使用线程来管理选项卡。但是当一个应用程序失败时,大多数应用程序都会崩溃。但Chrome将每个标签和扩展作为不同的进程运行;如果一个崩溃了,还有其他的没有大问题。如果你不确定,就使用线程。他们会毫无问题地满足你在问题中所述的需求。
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何找到锁定Linux futex的C++行
- 在linux上调试巨大的C++项目
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- c++方法参数只能在linux的发布模式下自行更改
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?
- 函数在Windows或Linux上运行时表现不同
- 在Linux下捕获SIGKILL的C++程序
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- mysql C++ connector [mysql-connector-c++-8.0.19-linux-glibc2
- c++ linux monitor processes for sigsegv
- c++ : Pthreads or Linux processes