一个读线程,一个写线程,共同操作一个队列,不用锁如何避免冲突?
 
通常用锁是因为读写线程共同操作一个count计数器,改成两个线程各操作一个计数器,每次读写之前比较两个计数器的大小。
 
初始:
head=-1;
rear=0;
a=0;
b=0;
 
读线程:
while(a>=b);//轮询
head=(head+1)%max;
val=data[head];
a++;
return val;
 
写线程:
while(b>=a+max);//轮询
data[rear]=val;
rear=(rear+1)%max;
b++;

相关文章:

  • 2021-07-01
  • 2022-12-23
  • 2021-07-07
  • 2021-08-12
  • 2021-05-21
  • 2021-08-18
  • 2022-12-23
  • 2021-10-24
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
  • 2021-11-03
  • 2021-12-09
  • 2021-12-23
  • 2022-02-01
相关资源
相似解决方案