蓝天

如何解决fd跨线程安全问题

fd跨线程是不安全的,当一个线程close它后,就相当于成了野指针,另一线程再使用就成了对野指针的使用,当系统调用使用一个已经close后的fd时,可能出现内核报错,如果安全使用它了?有两个办法:一是对fd进行再包装,产生应用对象,对象通过引用计数保证线程安全;二是dup,直接对fd引用计数,使不同fd指向同一个内核对象,不同线程持有的fd值将不相同,线程只close自己的,实际就是引用计数减一。采用这两种方法,都可以保证fd跨线程安全。

posted on 2012-07-24 16:19  #蓝天  阅读(317)  评论(0编辑  收藏  举报

导航