多线程-采用多进程是否能得到更多的CPU时间?

发布于 2016-12-14 15:16:32 字数 314 浏览 1251 评论 1

需要在底层完成一个服务程序,完成多个任务,一个任务是从驱动采集摄像头的视频数据,一个任务是向远程客户端发送视频数据,一个任务是对视频码流进行编码操作,还有一个任务是实现本地的视频输出显示,这四个任务可以使用多线程方案来实现,每个线程执行一个任务,也可以使用多进程来实现。

用多线程,则内存空间是直接共享的,这样不用在进程之间采用管道/共享内存的方式在各个任务之间传递数据,编程更容易,数据共享效率更高。

用多进程,可以使每个任务相对独立些,同时在考虑,如果采用多个进程,是否会使得每个任务能够得到更多的CPU时间呢?如果能,这样是否设计更好一些呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

虐人心 2017-04-03 06:39:58

先回答问题:采用多进程不会让每个任务得到更多的时间,建议使用多线程。

原因:
1、时间片:在大多数现代操作系统中,基本都是面向线程进行调度时间片的,即便是你创建一个单独的进程,操作系统也会为该进程分配一个主线程,然后和系统中其他线程一样进行统一调度。

2、通信:在多线程条件下,由于内存是共享的,所以可以直接在多线程中互相共享数据,而对于进程来说,要共享数据通常是把数据复制一份通过pipe之类的方法传递过去,性能差别显而易见。

3、为什么还有人用进程:这是因为线程虽然效率更高,但是线程安全是一个大问题,尤其是在使用很多第三方库的时候,如果不能确定哪些数据结构是线程安全的,就不要使用(这也是Python为何引入GIL的原因)。而使用多进程,由于内存相互独立,所以不必担心单个进程的数据被其他进程污染。

所以,在你的场景下多进程并不能带来更多的好处,如果你能很好的把握线程安全,非常建议使用多线程。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文