随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

 

首先几个 东西 :  环形缓冲区 Arr  , 配套的指针  recv ,  sendx

 

以下所有操作 均有 lock , unlock

 

write v :

  1.  读等待队列(r_wq)有元素,{

 

      弹出 r_wq 头元素S,  将 v写入S   

  }

 

  2. 可写入 缓冲区 {

    

    Arr[ sendx++] = v

  }

 

  3. 不可写入缓冲区 {

     

      struct hang { } ;     加入写等待队列      ;

  }

    

 

 

read v:

  1. 写等待队列(w_wq)有元素 {

    弹出读w_wq 头元素S1

    读Arr[recv]元素S2, 将 S2写入v  

    S1 写入Arr[recv]

  }

  

  2. 缓冲区非空 {

    读Arr[recv]元素S2, 将 S2写入v 

  }

  3. 缓冲区空 {

    同上,加入读等待队列

  }

  

 

posted on   towboat  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-12-14 求质因数
点击右上角即可分享
微信分享提示