c – pthread_create linux内核2.4.20和2.4.36的差异
发布时间:2020-12-13 19:10:41 所属栏目:Linux 来源:网络整理
导读:我在运行内核2.4.20和内核2.4.38的两个系统上有一些代码. 他们都有gcc 3.2.2和glibc 2.3.2 在内核2.4.38下,pthread_t句柄不会被重用.在负载测试下,一旦句柄达到0xFFFFFFFF,应用程序就会崩溃. (我首先怀疑这是因为应用程序在IT使用网络端口扫描程序的部署中崩
我在运行内核2.4.20和内核2.4.38的两个系统上有一些代码. 在内核2.4.38下,pthread_t句柄不会被重用.在负载测试下,一旦句柄达到0xFFFFFFFF,应用程序就会崩溃. (我首先怀疑这是因为应用程序在IT使用网络端口扫描程序的部署中崩溃 – 创建了用于处理套接字连接的线程) 这个简单的例子重现了这个问题:
在2.4.20下:
根据2.4.36:
如何让内核2.4.36回收句柄?不幸的是我无法轻易改变内核. 最佳答案
如果您的观察结果正确,则只存在两种可能的解决方案
或 >升级内核.这对您来说可能是也可能不可行. 即使内核行为不端,也可以使用选项2.您可以保留一个未使用时保持睡眠状态的线程池.线程池是一种广为人知的软件工程模式(见http://en.wikipedia.org/wiki/Thread_pool_pattern).这可能是更好的解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读