http://bbs.pediy.com/showthread.php?t=173091
这个话题我问了下 大概有一个思路就是
采用一种多线程并发访问无锁队列可以实现
但是不知道delphi怎么定义和实现
代码可以参考里面的代码
流程我大概的重写一下
创建线程A
1、从队列中获得的M(第一次为0,后面为线程B中获得)
2、判断(线程B是否启动)
3、没有启动 则启动线程B
4、执行动作A(M) ----消费这个数据消费完之后才允许它改变
5、执行动作B(inc(事物C)) 消费
6、回到1 直到线程A退出
创建线程B
1、判断是否存在(事物C)
2、不存在则创建(事物C) 生产
3、M=得到变量(事物C)----------- 不断生产这个 数据 并且给A进程消费把这次产生的数据M存到队列里面
4、执行动作B(inc(事物C)) 消费
5、回到1 直到线程B退出
这样的话只要解决队列的问题就可以解决之前的数据覆盖和等待的问题
但是。。delphi里面怎么定义这个东西多线程并发访问无锁队列
这个话题我问了下 大概有一个思路就是
采用一种多线程并发访问无锁队列可以实现
但是不知道delphi怎么定义和实现
代码可以参考里面的代码
流程我大概的重写一下
创建线程A
1、从队列中获得的M(第一次为0,后面为线程B中获得)
2、判断(线程B是否启动)
3、没有启动 则启动线程B
4、执行动作A(M) ----消费这个数据消费完之后才允许它改变
5、执行动作B(inc(事物C)) 消费
6、回到1 直到线程A退出
创建线程B
1、判断是否存在(事物C)
2、不存在则创建(事物C) 生产
3、M=得到变量(事物C)----------- 不断生产这个 数据 并且给A进程消费把这次产生的数据M存到队列里面
4、执行动作B(inc(事物C)) 消费
5、回到1 直到线程B退出
这样的话只要解决队列的问题就可以解决之前的数据覆盖和等待的问题
但是。。delphi里面怎么定义这个东西多线程并发访问无锁队列