Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 分叉后线程是否安全?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我已经知道你应该坚持使用分叉或线程来避免遇到非常奇怪且极难调试的问题,所以直到现在我总是这样做.我的问题在于,当我坚持只分叉时,创建许多短期流程来分配大量工作,以便在我想要提供更多CPU内核时获得更高成本,直到某些时候性能不会合理地扩大规模.同时,仅使用线程我必须非常小心我使用哪些库并且通常在线程安全方面非常防御,这占用了大量宝贵的开发时间并强制放弃一些喜欢的库.因此,即使我被警告​​,混合分叉和
我已经知道你应该坚持使用分叉或线程来避免遇到非常奇怪且极难调试的问题,所以直到现在我总是这样做.我的问题在于,当我坚持只分叉时,创建许多短期流程来分配大量工作,以便在我想要提供更多cpu内核时获得更高成本,直到某些时候性能不会合理地扩大规模.同时,仅使用线程我必须非常小心我使用哪些库并且通常在线程安全方面非常防御,这占用了大量宝贵的开发时间并强制放弃一些喜欢的库.因此,即使我被警告​​,混合分叉和穿线的想法确实在很多层面上吸引我.

现在,根据我到目前为止所读到的内容,当fork发生时已经创建了线程时,似乎总会出现问题.

鉴于我设计的系统可以启动,守护,分离其主要层级,并且在我完全安全和强大之后永远不再进行任何分叉.如果这些预分叉层中的一些现在开始使用线程将工作负载分配到许多cpu内核上,以便各种子进程永远不知道其他子进程的thrads,那么这仍然是安全的吗?我可以确保每个层本身都是线程安全的,并且非线程安全层不会启动自己的线程.

然我对这种方法感到非常安全,但我很欣赏一些关于此事的专业意见,指出各种可能的警告,有趣的观点,高级阅读的链接等.我个人使用的语言是Debian上的Perl,RedHat,SuSe和OS X,但主题应足够通用,以便对任何类似Un * x / BSD的平台上的任何语言都有效,这些平台可以表现为远程POSIXish,甚至可能是Interix.

解决方法

只要您不创建在分叉进程之间共享的任何MAP_SHARED共享内存区域,您的方法在POSIX下就可以了.一旦进程分叉,它们就是独立的.

POSIX documentation on fork().

大佬总结

以上是大佬教程为你收集整理的linux – 分叉后线程是否安全?全部内容,希望文章能够帮你解决linux – 分叉后线程是否安全?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。