J
jainibunan
Unregistered / Unconfirmed
GUEST, unregistred user!
我在做一个程序,想用两个线程来做,一个Thread1负责接收数据,另一个thread2负责把接收到的数据画到tchart上,数据保存在全局数组里,现在我碰到了如何将这两个线程同步的问题,我的逻辑是在thread1把数据接收进来保存到数组后,通知thread2,让它把刚才接收到的数据画出来,画好后,再通知thread1,让它继续把接收到的数据放到全局数组里来。我是这样做的,在thread1里:
EnterCriticalSection(CS);
for i:=0 to 3do
begin
Datal:=DataArray[2*i];
Datah:=(DataArray[2*i+1] and $0F)*16*16;
Damp:=Datah+Datal;
end;
LeaveCriticalSection(CS);
在thread2里:
EnterCriticalSection(CS);
for i:=0 to 3do
begin
Datal:=DataArray[2*i];
Datah:=(DataArray[2*i+1] and $0F)*16*16;
Damp:=Datah+Datal;
end;
LeaveCriticalSection(CS);
for i:=0 to 3do
With MainForm.Chart1.Series[0]do
Addy(Damp,'',clred);
可这样做,程序提示 variant or safe array out of bounds
我不知道那个cs是不是这样用,另外我用thread1时却没错误。
请大家指点一下!
EnterCriticalSection(CS);
for i:=0 to 3do
begin
Datal:=DataArray[2*i];
Datah:=(DataArray[2*i+1] and $0F)*16*16;
Damp:=Datah+Datal;
end;
LeaveCriticalSection(CS);
在thread2里:
EnterCriticalSection(CS);
for i:=0 to 3do
begin
Datal:=DataArray[2*i];
Datah:=(DataArray[2*i+1] and $0F)*16*16;
Damp:=Datah+Datal;
end;
LeaveCriticalSection(CS);
for i:=0 to 3do
With MainForm.Chart1.Series[0]do
Addy(Damp,'',clred);
可这样做,程序提示 variant or safe array out of bounds
我不知道那个cs是不是这样用,另外我用thread1时却没错误。
请大家指点一下!