fd跨线程是不安全的,当一个线程close它后,就相当于成了野指针,另一线程再使用就成了对野指针的使用,当系统调用使用一个已经close后的fd时,可能出现内核报错,如果安全使用它了?有两个办法:一是对fd进行再包装,产生应用对象,对象通过引用计数保证线程安全;二是dup,直接对fd引用计数,使不同fd指向同一个内核对象,不同线程持有的fd值将不相同,线程只close自己的,实际就是引用计数减一。采用这两种方法,都可以保证fd跨线程安全。
本文分享自 作者个人站点/博客 前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!