Linux文件共享(六)——描述符传递

  • 时间:
  • 浏览:1
  • 来源:大发快3官方直播—彩神UU快三代理

 

Linux文件共享总结:共享程度:

1.线程池共享(共享files_struct型态)

亲戚亲戚大伙儿又知道当亲戚亲戚大伙儿将有有五个文件描述符传递给有有五个线程池池后,文件的“访问计数”会增加,这和有哪些有点硬像?没错,dup对于线程池间传递文件描述符亲戚亲戚大伙儿能那么看作跨线程池的dup调用,也就说 我 同有有五个file对象在不同线程池间的映射,这和有有五个线程池打开同有有五个文件的结果相同,就说 我 接受文件描述符的线程池少了open的步骤而已,而对于网络接口返回的描述符,也那么采取传递文件描述符的法律土辦法 。unix 系统蕴含有有五个法律土辦法 来完成这俩任务:

BSD   sendmsg, recvmsg 法律土辦法

SYSV  ioctl 法律土辦法

     当有有五个线程池向有有五个线程池池传送一打开的文件描述符时,亲戚亲戚大伙儿你会发送线程池和接收线程池共享同一文件表项。下图显示了所希望的安排。

首先,亲戚亲戚大伙儿先来讨论有有五个问提报告 ——线程池间传递文件描述符究竟传递的是有哪些?

亲戚亲戚大伙儿从传递描述符函数的参数来看是个fd,亲戚亲戚大伙儿知道fd是打开文件指针的在数组中的下标,是有有五个整数,那么亲戚亲戚大伙儿仅仅是把有有五个整数传递给有有五个线程池池吗?答案肯定有无 定的,将会仅仅是传递整数值,那么必要专门去实现有有五个api。至于深度1次的的由于,亲戚亲戚大伙儿能那么想一下,假如有一天接受线程池仅仅收到的是有有五个整数值,他能知道有哪些,又能做有哪些呢?即使它知道这是来自有有五个线程池池的有有五个打开文件指针的下标,有有五个多它还是那么知道这俩下标在有有五个线程池池中对应的是哪个打开文件,其次,这俩下标对接收线程池有四种 毫无意义,将会在接受线程池中这俩下标(fd)将会将会被某些打开文件占用。

3.两独立线程池打开同一文件(共享dentry

总结:线程池间文件描述符的传递,就说 我 通过内核将接收文件的有有五个新的file指针指向和发送线程池的同有有五个file对象,并使这俩file对象的引用计数增加。

2.线程池间描述符传递、dup、父子线程池共享打开文件(共享file对象)

通过上一节分析线程池间文件共享,亲戚亲戚大伙儿能那么知道每个线程池的同有有五个file指针下标,对应同有有五个file对象,同有有五个文件在有有五个线程池中是有哪些清况 ,在有有五个线程池池(同一线程池中)也是有哪些清况 。某些线程池间不时要传递文件描述符,将会说仅仅通过fd值的传递即可达到传递描述符的效果(内核不想干预)。

注:转载请注明出处   作者:lvyilong316