链表与线程 (在线等待中……) (200分)

  • 主题发起人 主题发起人 Richard3000
  • 开始时间 开始时间
my email: li_violetcn@yahoo.com.cn
 
很奇怪!
我现在改用TObjectQueue,但是在Push的时候老是出错!为什么?
Balance:=TBalance.Create;
with Balancedo
begin
WriteTime:=Now;
BalanID:=BalanID;
SerialID:=Copy(IntToStr(GetTickCount()),1,5);
Weight:=Random(300);
end;
BalanceList.BalanceQueue.Push(Balance);
//压入链表当中BalanceQueue为TObjectQueue
 
有没有跟踪一下,看为什么出错
 
我查到为什么了。
一个共用变量,一个线程,一个procedure。thread和procedure都要访问变量,procedure写
thread读。好象是thread一直占有变量,procedure得不到它,写的时候就出错了。
我想把procedure也写成thread,可是我不知道怎么控制变量的读写。用信号量,还是互斥,
还是临界区?
 
在同一个进程中用临界区会有较高的效率,
对于类似于消费者和生产者的问题,需要用到信号量
我的例子程序写得挺清楚的,好好理解一下
主要是思路和方法
 
多人接受答案了。
 
后退
顶部