多个数据provider同时执行怎么实现?

来源:百度知道 编辑:UC知道 时间:2024/09/23 01:19:28
队列有三个数据provider,分别随机的间隔1~3秒向队列插入字符。Provider1插入字符a,Provider2插入字符b,Provider3插入字符c,每次插入字符的长度是随机1~10个字符。与此同时,队列有1个receiver,以1秒/字符的速度从队列中取字符(不用知道返回值)。队列长度设置为100。

我已经定义了一个数组循环队列,有Add和Delete函数。我要怎么才能实现几个Provider和receiver同时执行而不产生冲突,另外那个随机时间间隔执行一次怎么实现?
有好方法的话一定追分,人品担保。最重要的部分是那个随机间隔1-3秒执行一次怎么实现?

给Provider加个互斥量,让同一时间只有一个Provider访问队列.当该Provider写完字符之后,释放互斥量给下一个Provider.这样多个Provider同时执行可不冲突.也可以用Provider队列来完成,那样更简单.

至于Receiver可以独立运行,只要再加一判断,让Receiver读取数据直到Provider写入的数据之前就可不与Provider冲突了.举个例子说,Provider1插入字符串a,长度为1;Provider2插入字符串b,长度为3;Provider3插入字符串c,长度为7.则Receiver取字符时判断是不是超过11,未超过则取字符,否则等到Provider再次插入字符时再取.

随机间隔执行一次就要根据不同的语言来完成了.可以用延时函数,传个随机数作为延时时间参数.也可用多个控件,然后随机选择运行来实现。

一般要2-3秒你集开开吧只能帮到这