fd跨线程是不安全的,当一个线程close它后,就相当于成了野指针,另一线程再使用就成了对野指针的使用,当系统调用使用一个已经close后的fd时,可能出现内核报错,如果安全使用它了?有两个办法:一是对fd进行再包装,产生应用对象,对象通过引用计数保证线程安全;二是dup,直接对fd引用计数,使不同fd指向同一个内核对象,不同线程持有的fd值将不相同,线程只close自己的,实际就是引用计数减一。采用这两种方法,都可以保证fd跨线程安全。
如何解决fd跨线程安全问题
原创
©著作权归作者所有:来自51CTO博客作者一见_的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java 如何保证线程安全性 java如何解决线程安全问题
Java多线程安全问题及解决方案一、问题引入通过最常见的多窗口售票问题引入线程安全的问题。代码如下:注:这里使用Runnable接口来实现线程,这样做是为了共享代售票这个资源,如果我们使用继承Thread来操作,需要将代售票ticketCount设置为全局的公共变量才能实现效果。package com.example.thread.one;public class ThreadDemo {
java 如何保证线程安全性 java多线程安全问题及解决方案 java多线程安全问题 多线程安全问题解决方案 多线程同步