1个写,3个读,怎么实现?(100分)

  • 主题发起人 主题发起人 Jasonzhang
  • 开始时间 开始时间
J

Jasonzhang

Unregistered / Unconfirmed
GUEST, unregistred user!
1.多线程
现在有一个队列是公共数据,
有一个线程来不停向里面写
数据,另外有3到4个线程来
读取数据,怎么样使用api
的线程函数来实现其同步?
我已经做过 1个线程 来读
取数据的情况,现在就是
不知道多个线程怎么样读取,
依然使用生产者,消费者模
型,但是具体实现应该怎么
作,希望提供一些说明,
 
怎么做?
 
读全局数据开多少线程都无所谓呵,一个怎么做,多个也一样
 
使用一个公共读指针,指示当前要读的位置。每个线程读过数后读数指针加一。
为了实现线程互斥访问,应增加一个信号量
 
应该可以使用 TMultiReadExclusiveWriteSynchronizer 这个类来实现。
具体可以参考帮助。
 
创建互斥变量
createmutex
互斥同步
WaitForSingleObject
 
作一个线程,轮回这四个线程
 
PV 管程的一P多V。
你没说清楚消费者的V过程对P中数据的处理方法。
你是让每个数据都要被4个V访问到?还是谁访问了就是谁的?
 
是这样的,任何一个线程都要访问这个缓冲区,
我的初步想法是:设置一个线程的数组,然后
把每个线程对应的信号量也做成一个数组,这样
就可以实行pv操作了
不知这样行吗?
 
赫赫,都这么长时间了,早该结束了,省得占地方
 
后退
顶部